如何在自定义Overpass-API服务器上允许重复查询
解决Overpass-API重复查询报错(添加--allow-duplicate-queries仍无效)
问题场景
在EC2上基于Apache部署自定义Overpass-API服务器时,重复执行同一查询会触发以下错误:
Error: runtime error: open64: 0 Success /osm3s_osm_base Dispatcher_Client::request_read_and_idx::duplicate_query
已尝试通过--allow-duplicate-queries=yes参数启动dispatcher,但问题依旧。
解决步骤
验证dispatcher启动参数是否生效
- 终止当前dispatcher进程:
killall -9 osm3s_dispatcher - 使用完整命令重新启动,确保参数正确传递:
osm3s_dispatcher --allow-duplicate-queries=yes --osm-base --meta /path/to/your/overpass/database - 通过
ps aux | grep osm3s_dispatcher检查进程参数,确认--allow-duplicate-queries=yes已被加载。
- 终止当前dispatcher进程:
检查Apache配置的请求传递逻辑
- 确认Apache的反向代理/CGI配置未篡改查询参数,避免因额外添加的缓存标识、唯一ID等导致Overpass误判为重复查询。
- 核对Overpass CGI脚本的配置,确保脚本完整传递原始查询内容到dispatcher,无额外修改。
修复数据库目录权限
- 确保dispatcher的运行用户(通常为
apache或www-data)对Overpass数据库目录拥有读写权限:chown -R apache:apache /path/to/overpass/database chmod -R 755 /path/to/overpass/database
- 确保dispatcher的运行用户(通常为
升级Overpass-API版本
- 部分旧版本存在
--allow-duplicate-queries参数的兼容性bug,建议升级到最新稳定版:- 下载最新源码编译安装,或通过对应包管理器更新。
- 升级完成后重启dispatcher和Apache服务。
- 部分旧版本存在
内容的提问来源于stack exchange,提问作者Tucker A.
相关产品推荐
相关产品推荐

