時々、Apacheがおかしくなり、すべてのメモリとスワップを消費しますが、原因となっているWebアプリを特定する方法がわかりません。
psはこのプロセスの出力を私に与えます。 「中断のないスリープ(通常はIO)」
www-data 1526 0.1 78.9 14928852 3191628 ? D Oct17 6:45 /usr/sbin/Apache2 -k start
Ruby + Redmineだと思うが、確認したい
Apacheモジュール内にmod_status.so
がロードされていることを確認してから、上記を探してhttpd.confに追加します。
# Uncomment the following lines to enable mod_status support:
#
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from YOUR_IP_HERE
</Location>
これにより、使用されているすべてのページをhttpサーバー内の負荷ドメインで確認できます。
アクセスするには http:// your_ip/server-status を使用し、Allow from YOUR_IP_HERE
で定義されたIPのみがそれを表示できます。
Lsof -pは、待機しているファイルハンドルを示します。また、strace -pとltrace -pは、デバッグするのに便利です。