Solr 9.6.1本地启动正常但访问localhost:8983返回ERR_EMPTY_RESPONSE求助
Apache Solr 9.6.1启动后无法访问(ERR_EMPTY_RESPONSE)排查方案
问题概述
本地安装Apache Solr 9.6.1,启动日志显示服务已在8983端口运行,但访问localhost:8983或localhost:8983/solr/#/时返回ERR_EMPTY_RESPONSE。Docker环境下Solr可正常使用,但本地(含WSL、虚拟机)环境问题持续,已尝试重装、调整系统资源限制、修改Java堆内存、切换端口等操作,均未解决。
排查与解决步骤
1. 验证Jetty监听地址与访问方式
从solr.log可见,Jetty仅绑定了127.0.0.1:8983:
Started ServerConnector@878452d{HTTP/1.1, (http/1.1, h2c)}{127.0.0.1:8983}
- 优先尝试用
http://127.0.0.1:8983/solr/访问,避免localhost解析到IPv6导致的连接问题。 - 若需要从外部访问,修改Solr监听地址为所有网卡:
- 临时启动:
./solr start -Djetty.host=0.0.0.0 - 永久生效:在
solr.in.sh中添加SOLR_HOST=0.0.0.0
- 临时启动:
2. 解决JVM共享内存分配失败警告
solr-8983-console.log中存在Failed to reserve shared memory警告,这可能导致JVM无法正常处理请求:
- 禁用共享内存:在
solr.in.sh的SOLR_JAVA_OPTS中添加参数:SOLR_JAVA_OPTS="$SOLR_JAVA_OPTS -XX:-UseSharedSpaces" - 调整系统共享内存限制(Linux/WSL环境):
- 临时生效:
sysctl -w kernel.shmmax=1073741824(设置为1GB) - 永久生效:编辑
/etc/sysctl.conf,添加kernel.shmmax=1073741824,执行sysctl -p加载配置
- 临时生效:
3. 排查网络拦截问题
- 用curl命令测试请求细节,确认请求是否到达服务:
若输出显示连接超时/拒绝,检查本地防火墙规则,临时关闭防火墙重试;若浏览器访问异常但curl正常,排查浏览器代理设置。curl -v http://localhost:8983/solr/
4. 更换Solr安装目录(针对WSL环境)
当前Solr安装在WSL挂载的Windows目录/mnt/c/users/cosmin/Downloads/,可能存在文件系统权限或兼容性问题:
- 将Solr解压到WSL本地目录,例如
/home/cosmin/solr-9.6.1,赋予目录权限:chmod -R 755 /home/cosmin/solr-9.6.1 - 重新启动Solr测试
5. 启用详细日志定位问题
- 查看Solr的请求日志
server/logs/2024_07_23.request.log,若日志中无请求记录,说明请求未到达Jetty;若有记录但无响应,进一步调整Jetty日志级别:
在log4j2.xml中修改Jetty相关日志级别为DEBUG,重启服务后查看详细错误信息。
内容的提问来源于stack exchange,提问作者Cosmin Drăguşanu
相关产品推荐
相关产品推荐

