增加自己安装的 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 上。
出于我的特定目的,我需要更改 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 上。