欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Apache Solr ApacheSolr偶尔会停止工作。我如何调试它或检测发生了什么? 有大用

每隔几周,solr 就会变得不可用。使用它的网站上的搜索页面会崩溃,并且 solr web 管理员无法访问(无法连接)

以下是 solr 状态显示的内容:

root@wairc-kman-1:/var/solr/logs# service solr status
● solr.service - LSB: Controls Apache Solr as a Service
     Loaded: loaded (/etc/init.d/solr; generated)
     Active: active (exited) since Thu 2022-07-07 16:28:25 UTC; 2 weeks 6 days ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 0 (limit: 2338)
     Memory: 0B
     CGroup: /system.slice/solr.service

Jul 07 16:28:16 wairc-kman-1 systemd[1]: Starting LSB: Controls Apache Solr as a Service...
Jul 07 16:28:16 wairc-kman-1 su[720036]: (to solr) root on none
Jul 07 16:28:16 wairc-kman-1 su[720036]: pam_unix(su-l:session): session opened for user solr by (uid=0)
Jul 07 16:28:25 wairc-kman-1 systemd[1]: Started LSB: Controls Apache Solr as a Service.

网站日志显示:

Uncaught Exception GuzzleHttp\Exception\ConnectException: "cURL error 7: Failed to connect to localhost port 8983: Connection refused

我在 solr 日志 /var/www/solr/logs/solr.log 中找不到一周前更新的任何内容

重新启动“修复”了错误 - solr 再次变得可访问。我该如何调试?或者检测它并在需要时重新启动?

  • 当 Solr 不可用时,您可能仍会发现一些有趣的日志/var/log/messages。您是否检查过服务器内存 (JVM) 和磁盘空间?如果您“找不到一周前的任何最新信息”,则可能是您的日志记录策略对于您的系统来说太过繁重,尤其是在没有空间的情况下,请参阅此帖子。此外,听起来很奇怪,确实会发生(至少对我来说在 CentOS 7 上)通过 SysVInit 运行 Solr 无法正确跟踪 Solr 状态,而 SystemD(systemctl)可以。  评论2022 年 7 月 28 日 18:55
  • 您可以创建一个 cronjob,每分钟运行一个特定的脚本,该脚本将使用Ping API检查 Solr 状态,并在不可用时采取适当的措施。还有其他管理端点,如“健康”和“系统”(即用于跟踪内存使用情况),可能有助于了解正在发生的事情(我会每 6 小时在专用日志文件中记录一次它们的输出)。  评论2022 年 7 月 28 日 19:00
  • Solr 消失通常是由于 OOM(内存不足)终止程序终止进程造成的。在这种情况下,您会在/var/log/syslog或 中找到一个日志条目/var/log/messages。在这种情况下,调整可用内存;journalctl也可能有助于从进程本身获取任何前台/systemd 错误。  评论2022 年 7 月 28 日 22:47
  • 感谢这些评论。@MatsLindh - 如果它终止该过程,状态看起来会不会有所不同? 
    – 将要
     评论2022 年 7 月 29 日 13:47
  • @EricLavault - ping solr 似乎是可行的方法,然后停止并启动它。不过,我不明白如何在 sh 脚本中做到这一点。重新启动很简单,但我如何运行 ping 并检查响应? 
    – 将要
     评论2022 年 7 月 29 日 14:03


普通分类: