0

我已将 Nominatim 安装到专门用于 OSM 数据的服务器上,具有以下配置:CentOS 7 操作系统、2x Intel XEON CPU L5420 @ 2.50GHz(共 8 个 CPU 内核)、16 GB 内存和 2x2TB SATA 硬盘驱动器。

考虑到我的机器只有 16 GB而不是建议为这些配置使用 32 GB。我用过以下东西:

shared_buffers = 1GB             # recommended for a 32GB machine was 2 GB
maintenance_work_mem = 4GB       # recommended for a 32GB macinhe was 8 GB
work_mem = 20MB                  # recommended for a 32GB machine was 50 MB
effective_cache_size = 10GB      # recommended for a 32GB machine was 24 GB
synchronous_commit = off
checkpoint_segments = 100
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
fsync = off
full_page_writes = off`

首先,我尝试导入一个小国家提取物(卢森堡),设置缓存大小为 6000,使用 utils 中的 setup.php 文件,在 1 小时内成功导入。

其次,我把卢森堡的数据删掉了,另外导入了大不列颠的国家提取,缓存大小8000,同样导入成功,2-3小时左右。

今天,我决定尝试导入整个planet.pbf 文件,因此我删除了postgresql 数据库,从官方镜像站点之一下载了该行星的pbf,并使用缓存大小运行设置10000. 之前,我已经阅读了一些基准,以模糊了解此操作需要多少时间和空间。

当导入开始时,我感到非常惊讶。节点的导入以 1095.6k/s 的惊人速度进行,在我分析过的基准(32GB ram 机器)中,它只有 311.7k/s。

但是当节点导入完成,路径导入开始时,速度明显下降。它正在以0.16k/s的速度导入路径(虽然是缓慢上升,但从0.05k/s开始,4小时后上升到上述值)。

我已停止导入,并尝试调整设置。我首先分配了更高的缓存大小(12000),但没有成功,节点以非常高的速度导入,但方式保持在 0.10-0.13k/s。然后我尝试分配一个新的交换文件(原来是 8GB,我已经分配了另外 32GB 作为交换文件),但这也没有改变任何东西。最后,我编辑了 setup.php,将 --number-processes 从 1 更改为 6,并在 osm2psql 从那里启动时包含了 --slim 关键字,但没有任何改变。

现在我没有想法。这个速度下降正常吗?我应该将我的机器升级到推荐的内存吗?我坚持认为 16GB 内存足以满足 Planet pbf 的需求,我知道这台机器可能需要更多时间,然后是 32GB,但这似乎非常多。如果整个星球的导入时间不超过 12-15 天,我可以接受,但现在看来,使用这些设置,导入将需要大约 2 个月,考虑到这个错误,这实在是太多了可能发生在任何地方,我必须重新开始整个导入过程。

有什么想法可能导致这个问题,或者我可以尝试哪些其他调整来加快导入过程?

谢谢

4

1 回答 1

1

我在使用 SATA 驱动器时遇到了类似的性能问题,当我将 SATA 驱动器替换为 SSD 驱动器时,导入速度从 0.02k/s 加速到 8.29k/s。现在我的关系导入速度非常慢,速率为 0.01/s,所以我相信内存也是完整行星导入的一个重要因素,但我没有再次测试它。

于 2016-03-08T02:35:15.990 回答