增加自己安装的 OpenStreetMap 立交桥的最大内存限制 API

Increase maximum memory limit in own install of OpenStreetMap's Overpass API

出于我的特定目的,我需要更改 Overpass API 对 area 的定义以包括所有建筑物,无论它们是否有名称(因此 is_in() 将 return 这些建筑物在请求时)。

为了实现这一点,我安装了一个包含 3 个特定国家/地区的 API 的本地副本,并修改了生成适合我的定义的区域的 os3m 脚本——到目前为止,一切顺利。

显然,此脚本需要比默认脚本更多的内存,因为它要处理 批次 更多 ways。我 运行 正在使用的机器有 16GB of RAM。如果我为脚本指定 2GB 或更少(即 element-limit="2073741824"),那么它将 运行 内存不足,但指定更多(即使是 100MB)将 always 导致错误:

Dispatcher_Client::request_read_and_idx::timeout

几秒钟后。

问题是,我如何告诉 Overpass API/dispatchers 使用超过 2GB 是完全没问题的,事实上,允许它为此分配最多 ~15GB查询?

您可以尝试增加 settings.cc 中 total_available_space 的两个值(当前为 4GB)并从源代码重新编译 Overpass API。

AFAIK 以前没有人尝试过通过区域处理大量建筑物,因此请为进一步的问题做好准备。 Overpass API developer 列表可能是讨论这个问题的好地方,也可以引起 Roland 的注意(Overpass API developer/maintainer),因为他不在 Whosebug 上。