我目前正在EC2上构建一个实例,在该实例上导入我们正在处理的某些项目的整个Earth.sm数据的整个Planet.osm快照。我已经启动了一个大型的Ubuntu x64实例,并在Postgres数据库的EBS卷上附加了许多单独的存储,并对其进行了修改以在其中容纳PGSQL数据。

现在服务器在使用osm2pgsql时遇到了问题导入快照...经过几次尝试,使用了不同的内存配置,但经过大部分尝试后,该过程始终输出“ Killed”(杀死);一旦它在“遍历未决方式”时被杀死,下一次,在稍微调整了细长缓存之后,它到达了“处理方式”,然后崩溃了。根据我的阅读,这通常是由于内存问题造成的。

这是我最近一次运行导入的尝试:

以下是EC2上大型实例的规格:


大型实例7.5 GB内存,4个EC2计算单元(2个虚拟内核,每个虚拟内核具有2个EC2计算单元),850 GB本地实例存储,64位平台


我的问题是-是否有一些好的基准测试资源来确定osm2pgsql和Postgres的调优要求?导入速度对我来说并不那么重要,我只是想确保过程安全完成,即使需要4到5天...我已经阅读了Frederick Ramm的“优化渲染链”(PDF)文件,来自去年的SOTM,但是还有其他好的意见/资源吗?

评论

在EC2上这样做不是很昂贵吗?

保持运行并不便宜,但临时计划是将其旋转,生成磁贴集然后将其关闭并使用该设置一段时间,直到我们需要应用更新为止。与购买大型服务器相比,它仍然便宜得多...

有趣!我从未在旧的XP-Home-Box上尝试过此操作。真的有效吗?我问这是因为它是为转换Geofabrik或Cloudmade的摘录而不是针对整个星球而编写的。这个星球似乎是无效的XML。您是如何解决这个问题的?

@Carsten在将您对评论表格的回复迁移时,我无意中删除了@jvangeld的评论。它是:嗨,卡斯滕,欢迎来到GIS.se。当开发人员来这里帮助人们开发程序时,这真是太棒了。但您在这里的答案作为对@winwaed帖子的评论可能会更好。同样,很高兴你在这里!

#1 楼

正如文档所述,您可能需要超过256gb的ram来实现。

我对EC2不太了解,但是您可以尝试使用超薄(--slim)模式或尝试渗透。 br />
有一个有趣的帖子:http://weait.com/content/build-your-own-openstreetmap-server
它说,“您必须使用苗条模式”。

评论


是的,我也了解必须使用苗条模式才能应用差异进行更新。

–colemanm
2011-2-14 15:10

#2 楼

由于内存限制,我什至没有尝试使用osm2pgsql来加载planet.osm的路由数据。取而代之的是,我使用osm2po:

http://osm2po.de/

大多数文档都用德语编写,但是经过一些试验,我设法使其正常工作。在专用的Core 2 Quad上花费几天时间(但它仅使用一个线程)。

#3 楼

我在寻找其他内容时遇到了以下问题http://aws.amazon.com/datasets/2844-我不确定它是否会帮助您,但这可能是一个起点。

评论


即使从2009年开始,这绝对也可以立即使用。

–colemanm
2011-2-14在20:53

#4 楼

除了使用旧的预先生成的软件包以外,您是否还可以解决您的问题?我似乎在EC2实例中有非常相似的问题。我正在使用http://download.bbbike.org/osm/

time ./osm2pgsql -S default.style --slim -d gis -C 7000 --hstore /mnt/planet/planet-latest.osm.pbf
osm2pgsql SVN version 0.70.5
...(creating db tables)
Reading in file: /mnt/planet/planet-latest.osm.pbf
Processing: Node(741920k) Way(0k) Relation(0)Killed

real    276m47.695s


的pbf planet更新:看来我找到了解决方法-将请求的内存减少到6后GB(参数-C 6000)的过程正常运行(至少现在已经工作了几天,希望今天能完成)。

似乎具有7.5GB内存的m1.large实例太少了,无法容纳所有节点的内存(现今大约需要11GB)。 osm2pgsql似乎需要不到700MB的额外内存,因此,使用-C 7000时,它正在运行的内存不足,但是使用-C 6000(或者也可能是-C 6500)时,它可以工作。

我也建议使用具有至少15GB RAM的更高内存实例,它应该使导入速度更快。甚至是两倍大的内存实例,这将花费一倍,但应该能够在<5小时内以非苗条模式完成完整的星球导入(比苗条模式快约3-4倍)。因此它实际上会更便宜。

#5 楼

我让osm2pgsql使用更少的cpu和更多的RAM在EC2上工作。由于内存问题,它失败了,直到我将实例升级到具有17个内存的RAM的超大内存。