为什么使用 -k stop 停止 httpd 会杀死 tomcat 实例?

为什么使用 -k stop 停止 httpd 会杀死 tomcat 实例?

由于某种原因,每次我使用停止 httpd 的第二个实例时

/usr/sbin/httpd -f /otherplace/httpd.conf -k stop

我的一个或两个 tomcat 实例被终止(从内存中取出),没有给出任何错误或发生情况的痕迹。

我使用以下命令启动了第二个实例:

/usr/sbin/httpd -f /otherplace/httpd.conf -k start

详情如下:

我的 Tomcat 实例绑定到不同 IP 上的端口 80。httpd 的第二个实例绑定到端口 5634(没有任何东西绑定到此端口)。有些 tomcat 实例不会被杀死,就像是随机事件一样。

感谢您的帮助。

答案1

也许尝试从 server.xml 更改默认的 SHUTDOWN 命令

<Server port="8005" shutdown="SHUTDOWN" debug="0">

类似于

<Server port="8005" shutdown="0fbb9aebcbfbef203eca71b6be367859" debug="0">

任何向默认端口发送“SHUTDOWN”的操作都会停止 tomcat,也许您的 httpd 正在通过连接器或某种方式发送它。 参考文献1参考文献2

答案2

Apache 有一个模块可以将请求转发到 tomcat。此模块启用了吗?如果不需要,请尝试禁用它。

答案3

并不是说我具体知道 tomcat 如何执行关闭...我希望有一个与该进程相关联的 pidfile,或者一个告诉应用程序关闭的控制端口。

然而,除了这些之外,脚本通过查看“ps -ef”输出(或类似输出)来“搜索和杀死”是很常见的。在这些情况下,kill 脚本很容易过于激进并杀死所有匹配的 pid(或仅杀死这些 pid 的父进程)。

我无法告诉你我有多少次在‘vi’中编辑脚本却被某个地方激进的‘停止’命令终止。

相关内容