Solr 修改配置后没生效,而执行 stop 后页面还可访问,先确认停的是不是实际响应请求的实例。页面能打开,不足以证明刚才的停止命令成功,也不足以证明新配置已经加载。
当时是在配置中文分词器时发现的
2019 年使用 Solr 8.0,在配置 IK 分词器的过程中执行 solr stop -all,之后 8983 仍能访问。原记录最后通过任务管理器结束监听进程,再启动 Solr。
这保留了当时的现象与处理结果,但没有证据证明是插件导致停服失败。分词器安装内容当时参考外部文章,不应把它与本篇的进程排查混为一套通用教程。
先做只读检查
Windows CMD 可查看端口及 PID:
netstat -ano | findstr ":8983"
-a 列出连接和监听,-n 用数字地址,-o 显示 PID。匹配结果也可能包含非监听连接,应看本地地址、状态和端口,不是看见 8983 就结束进程。Microsoft netstat
取得实际 PID 后,可在任务管理器“详细信息”中显示 PID、命令行及可执行文件位置;也可用下面的形式核对进程名,数字仅为示意,不能照抄当作目标:
tasklist /FI "PID eq 12345"
还需确认 Java 启动参数、Solr 安装目录、solr.home、端口和服务托管方式。多个安装目录、不同用户或 Windows 服务都可能让“当前目录的 solr”不是正在运行的那一个。
正常停止应指向已经确认的实例
Solr 8 控制脚本提供按端口停止及状态检查等入口。具体命令应来自该安装目录的帮助与部署方式;服务托管时优先按托管服务的正常停止流程处理。Solr 8.0 控制脚本
只有确认实例归属、维护窗口和数据风险后,才考虑结束异常进程。强制结束不是每次改配置的固定步骤,更不能对所有 Java 进程批量操作。
重启后再次核对实际加载配置
先确认旧监听确实消失,再启动正确实例,看日志中的 core、配置目录和加载错误。分词效果应到目标字段的 Analysis 页面核对;“服务重新能打开”与“分词器配置正确”是两项不同结果。