- ベストアンサー
無限ループ対策の方法とは?
- CentOS5.4のサーバで発生する無限ループ問題について、対処方法や自動化について教えてください。
- 管理しているサーバでプログラムのミスにより無限ループが発生することがあります。手動で対応する方法があるようですが、自動化されている方法はありますか?
- CentOS5.4のサーバで無限ループが発生する場合、手動で対処する方法と自動化された方法があるようです。自動化された方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
RLimitCPU でググッてみてください。 Apacheのconfに上記ディレクティブを追加すれば、無限ループの際に強制終了させるまでの実行時間を指定することができます。
その他の回答 (3)
- oktuburero
- ベストアンサー率22% (102/446)
>確かにある一定時間経過後にタイムアウトさせるようにすれば、無限ループしてても強制終了しそうですね。 >一度その方向で検討してみます。 検討も何もWebサーバやPHP元々組み込まれている標準の機能。
お礼
ご回答ありがとうございます。 現在の設定時間では長すぎるという事ですね。 参考になりました。 以上、よろしくお願いします。
- saijyo_739
- ベストアンサー率53% (119/222)
> ……ような方法で対応しているのですが、 その方法ならシェルスクリプト化も簡単なように見えるのでシェルスクリプトにしてcronで定期的に(1分おき・10分おき・1時間おきなど必要に応じて)監視させれば良いかと思います。 psコマンドや/procみれば条件は判別できるでしょうし。 自作ソフトだけを監視対象にした方が安全性が高そうな気はしますが。 定期的にデータベースの更新など行なっていればそういうコマンドはそれなりに負荷高いでしょうし。 自作ソフトでは起動時に自身のpidを保持しておき、対象のpid群に付いて調べるようにする事も難しくないでしょうし。 例えばシェルスクリプトで自作コマンドをバックグラウンドで起動して $! を調べれば直前に起動したコマンドのpidは把握できるでしょうし。 ps -p pid -o '%cpu' とか ps -p pid -o '%mem'とかでpidなプロセスの様々な資源は確認できるでしょうし。 > 私のプログラムミスが原因で無限ループしてしまう事がたびたびあります。 同じミスは起こらないような対応考えましょう。
お礼
ご回答ありがとうございます。 厳密には、完全に自作のソフトもありますが、改造的な事もあります。 それとご指摘のように夜間のバックアップなど負荷の高い処理があるので、その点については検討してみたいと思います。 後、プログラムミスが起きないように出来るのが理想ですが、多分それは無理なので、プログラムミスが起きることを前提に、その場合でも問題ないようにしたいというのが、今回の質問の趣旨となります。 以上、よろしくお願いします。
- oktuburero
- ベストアンサー率22% (102/446)
レンタルサーバって事はhttpプロトコルでの話で良いんだよな? だったらタイムアウトがあるから。 phpにしてもタイムアウトの時間設定ができる。
お礼
ご回答ありがとうございます。 プロトコルはhttpです。 確かにある一定時間経過後にタイムアウトさせるようにすれば、無限ループしてても強制終了しそうですね。 一度その方向で検討してみます。 以上、よろしくお願いします。
お礼
ご回答ありがとうございます。 調べて試してみるようにします。 以上、よろしくお願いします。