osm2pgsql - 导入openstreetmaps行星文件需要很长时间

时间:2016-02-25 15:55:40

标签: postgresql nominatim osm2pgsql

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

我已经根据Nominatim安装wiki(http://wiki.openstreetmap.org/wiki/Nominatim/Installation#PostgreSQL_Tuning)上的recomendations配置了postgresql,考虑到我的机器只有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`

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

其次,我删除了卢森堡的数据,并为了另一个测试目的导入Great Brittain的国家摘录,使用8000的缓存,它也成功导入,大约2-3小时。

今天,我决定尝试导入整个planet.pbf文件,所以我删除了postgresql数据库,从官方镜像站点之一下载了一个行星的pbf,然后用一个高速缓存大小为10000.事先,我已经阅读了一些基准,以便对这项操作需要多少时间和空间有一个模糊的概念。

进口开始时,我非常惊讶。在我分析的基准测试(32GB ram机器)中,节点的导入速度高达1095.6k / s,仅为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的RAM对于行星pbf是足够的,我知道这台机器可能需要更多时间,然后是32 GB,但这似乎非常多。如果整个星球的进口时间不会超过12-15天,那我就可以了,但是现在看来,使用这些设置导入大约需要2个月,考虑到错误,这太多了可能发生在任何地方,我必须再次开始整个导入过程。

任何可能导致此问题的想法,或者我可以尝试进行哪些其他调整来加强导入过程?

由于

1 个答案:

答案 0 :(得分:1)

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