我的应用程序部署为Debians并开始使用systemd服务。该应用程序随机崩溃。我找不到崩溃的原因。
我有4个正在运行的应用程序[使用java
,scala
构建],其中两个应用程序被杀死(分别命名为op
和common
)。所有这些都使用systemd服务开始。
syslog上的错误是
Jul 22 11:45:44 misqa mosquitto[2930]: Socket error on client 005056b76983-Common, disconnecting
Jul 22 11:45:44 misqa systemd[1]: commonmod.service: Main process exited, code=exited, status=143/n/a
Jul 22 11:45:44 misqa systemd[1]: commonmod.service: Unit entered failed state
Jul 22 11:45:44 misqa systemd[1]: commonmod.service: Failed with result 'exit-code'
Jul 22 11:45:44 misqa systemd[1]: opmod.service: Main process exited, code=exited, status=143/n/a
Jul 22 11:45:44 misqa systemd[1]: opmod.service: Unit entered failed state
Jul 22 11:45:44 misqa systemd[1]: opmod.service: Failed with result 'exit-code'
但是我的
op
和common
的应用程序日志文件都没有出现任何错误当我阅读更多内容时,我了解到崩溃的原因是由于
SIGTERM
命令,但无法找出导致它的原因。在任何这些应用程序中,我都没有killall
的exec命令。无论如何,有没有找出哪个进程正在杀死我的应用程序。
我的系统服务是这样的:
[Unit]
Description=common Module
After=common-api
Requires=common-api
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/common-api
[Install]
WantedBy=multi-user.target
最佳答案
基本上,Java程序有时会在响应SIGTERM而关闭时不发送预期的退出状态。
您应该能够通过将退出代码作为“成功”退出状态添加到systemd服务文件中来抑制这种情况:
[Service]
SuccessExitStatus=143
该解决方案成功地在Java应用程序中同时应用了here (serverfault)和here (stasckoverflow)。
关于scala - Ubuntu服务随 “Main Process exited, status 143/n/a”随机停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57156111/