我的tomcat有問題。每隔一段時間,Tomcat就會被一個oom殺死......
所以我用stressapptest對其進行了測驗以強制oom,然后嘗試重新啟動tomcat。
我寫了一個簡單的 bash 腳本,它將重新啟動 tomcat 服務。
這是腳本:
#!/bin/bash
if [ "$(systemctl is-active tomcat9)" == "failed" ] || [ "$(systemctl is-active tomcat9)" == "inactive" ]; then
echo "Restarting tomcat!"
systemctl restart tomcat9.service
exit
else
exit
fi
在 setenv.sh 里面我寫了這個選項。
-XX:OnOutOfMemoryError='/root/restart.sh'
這就是 setenv.sh 腳本的樣子:
#!/bin/sh
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom -server -Xms1536m -Xmx1536m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:OnOutOfMemoryError='pkill java;/root/restart.sh' -XX: DisableExplicitGC -DecadiaConsoleLogLevel=off"
但我不知道,為什么選項“XX:OnOutOfMemoryError”不起作用......
有人可以幫我解決這個問題嗎?
提前致謝!
uj5u.com熱心網友回復:
您正在通過 systemd 運行 Tomcat。這有兩個后果:
Tomcat 的啟動命令可能來自 systemd 配置,而不是您編輯的腳本。因此,您需要查看其他檔案以進行有效更改。
你只需要告訴 JVM 就是在 OutOfMemoryErrors 上死掉。然后告訴 systemd 自動重啟服務。根本不需要您的腳本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/511509.html
標籤:爪哇雄猫呜呜
上一篇:如何在Tomcat中啟用h3?
