Ruby on Rails Application with Passenger + Apacheを実行しています。mod_Perlで実行されているPerlメーリングリストサーバー(Sympa)もあります。
サーバー(Ubuntuマシン)へのrootおよびshアクセス権があります。
ほとんどの場合、問題なく動作します。サーバーには、ワークロードを処理するのに十分なメモリとディスク容量があります。
しかし、時々(おそらく、3か月に1回程度)、Apacheプロセスの一部が「不正になり」、メモリとCPUを狂ったように消費し始めます。その結果、Webサイトがダウンします(コールドリブートを実行する必要がある場合がありました。Apacheをリブートするだけでは不十分でした)。いくつかのテストを行いましたが、ハングアウトしているプロセスはRubyプロセスであるようです。これにより、Passengerの動作がおかしいと思われます。
これが最後の「停止」(ちょうど起こった)のMuninグラフです。
Rubyプロセス(Passenguer)については疑わしいです。しかし、「ワイルドプロセス」をトリガーする条件を特定することはできません(私はアプリをホストするだけで、開発しませんでした) )。それは素晴らしいことですが、単に「ハングプロセスを強制終了する」方が簡単かもしれません。
メモリやCPUを大量に消費するプロセスを「自動キル」する方法があるかどうか知りたいのですが。この問題に対処するApacheモジュールまたは構成フラグはありますか?
編集:これまでのところ、ApacheのRLimitCPU、RLimitMEM、およびRLimitNPROCを試しましたが、役に立ちませんでした。Passengerはこれらの設定に影響されないようです。この問題は現在Passengerにあると確信しているので、この質問の一部にタグを付け直して書き直しています。
ulimits(/etc/security/limits.confを介して構成するか、問題のある可能性のあるバイナリを実行する前にulimitを実行するだけで構成)は、おそらくこれに対する解決策です。