web-dev-qa-db-ja.com

乗客-「自動殺害」の不正なプロセス?

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にあると確信しているので、この質問の一部にタグを付け直して書き直しています。

2
egarcia

ulimits(/etc/security/limits.confを介して構成するか、問題のある可能性のあるバイナリを実行する前にulimitを実行するだけで構成)は、おそらくこれに対する解決策です。

0
Cian