最近、プロセスがランダムにメモリ不足例外で死ぬようになりました。さらに、印刷されたそれらのプロセスの再起動スクリプト: ./start.sh:4:./start.sh:Debian:フォークできません(メモリ問題)
をforkできないスクリプトは次のようになります。
#!/bin/sh
#EU1
while :
do
if ! screen -list | grep -q "eu1"; then
echo EU1 ist down, Patch eingeleitet!
cd MysticRunes/EU1
./patch.sh
echo EU1 Patch ausgeführt!
screen -dmS eu1 java -Xms6000M -Xmx6000M -jar spigot.jar nogui
echo EU1 neugstartet!
cd ../..
fi
#MRDev
if ! screen -list | grep -q "mrdev"; then
echo MRDev ist down, restart eingeleitet!
cd MysticRunes/Developer
screen -dmS mrdev java -Xms4000M -Xmx4000M -jar spigot.jar nogui
echo MRDev neugstartet.
cd ../..
fi
sleep 1
done
無料-mは、このことを示しています
total used free shared buffers cached
Mem: 32125 29902 2222 0 1386 17873
-/+ buffers/cache: 10642 21483
Swap: 16375 0 16375
そしてhtopのは、このことを示しています
私は本当に問題ここでいただきまし伝えることはできません。私は使用されているメモリを調べましたが、私のメモリはあまり使われていませんでした。なぜなら、キャッシュにのみ割り当てられ、メモリが必要なときにキャッシュに割り当てられたメモリが解放されているからです。何度も何度も同じプロセスを表示しているHTOPは、おそらくサーバーが正しく動作しているスレッドの量だけでしょうか?プロセスの8.7%のメモリ使用量を持つすべてのエントリを合計して合計8.7%にすることは基本的に可能ですか?
多分私はこれを間違っているので、修正してください。
よろしくお願いいたします、
Jalau
このJavaアプリケーションのスレッド数は通常ですか?アプリケーションは、バグや誤設定のためにスレッドを直感的に作成し、カーネルのプロセステーブルを新しいPIDを作成できないポイントまでいっぱいにする可能性があります。 32ビットLinuxを実行している場合、/ proc/sys/kernel/pid_maxは32768と低いかもしれません。 –
@ HishamHM私はそれが正常であるべきだと思います。私はしかし、確認することができます。先端に感謝します。 Linux 32bitを確認するにはどうすればいいですか?もしそうなら、私はどうしたらいいですか? – Jalau
'cat/proc/sys/kernel/pid_max'を実行し、それが返す番号を確認してください。それが32768のような低い数なら、あなたはこのスレッド数を超えることはできません。 'ps -efL |を実行するwc -l'は使用中のPIDの現在の数を返します。 –