如何修改OSRM table查询限制?自建实例调整遇问题求助
解决OSRM自建实例提升Table查询上限的问题
一、Docker环境下的正确启动命令
直接用以下完整命令启动OSRM容器,替换其中的本地路径和参数值即可:
docker run -d -p 5000:5000 -v /你的本地OSRM数据目录:/data osrm/osrm-backend osrm-routed --max-table-size=10000 /data/berlin-latest.osrm
各部分说明:
-d:让容器在后台运行-p 5000:5000:把容器的5000端口映射到本地,方便通过localhost:5000访问服务-v /你的本地OSRM数据目录:/data:将本地存放OSRM预处理后数据的文件夹挂载到容器内的/data目录,确保容器能读取到完整的数据文件osrm/osrm-backend:使用官方的OSRM后端镜像osrm-routed --max-table-size=10000 /data/berlin-latest.osrm:容器内执行的启动命令,--max-table-size=10000用于设置table查询的最大数量(可按需调整数值),后面的/data/berlin-latest.osrm是容器内的数据文件路径(对应本地挂载目录里的同名文件)
二、解决「Required files are missing」错误
出现这个错误是因为OSRM运行时需要完整的预处理数据文件,而非单个.osrm文件。你需要确保本地挂载的目录里包含以下配套文件(以berlin数据为例):
- berlin-latest.osrm
- berlin-latest.osrm.ramIndex
- berlin-latest.osrm.fileIndex
- berlin-latest.osrm.names
- berlin-latest.osrm.nodes
- berlin-latest.osrm.edges
- berlin-latest.osrm.areas
- berlin-latest.osrm.locations
这些文件是通过osrm-extract和osrm-contract命令预处理原始OSM数据后生成的,必须全部放在同一个目录下,容器才能正常读取。
三、验证参数是否生效
容器启动后,访问http://localhost:5000/status,返回的JSON数据里会有max_table_size字段,查看其值是否和你设置的一致,即可确认参数是否生效。
纠正之前的错误操作
- 单独执行
--max-table-size=10000:这不是独立命令,必须作为启动参数跟在osrm-routed后使用 - 只执行
osrm-routed --max-table-size=10000:缺少数据文件路径,OSRM服务无法启动,因此没有效果 - 执行
osrm-routed --max-table-size=100000 berlin-latest.osrm:当前目录下没有完整的预处理数据文件,或路径错误导致容器无法读取所需文件
内容的提问来源于stack exchange,提问作者Freeego
相关产品推荐
相关产品推荐

