この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
前回に引き続き、Passengerに標準でインストールされるステータス確認ツールの紹介をしたいと思います。
passenger-memory-stats
passengerのプロセスのメモリの使用状況が見れます。出力内容がpassenger 3.0より変わったようで、3.0より前、3.0以降で以下のようになります。
3.0より前
-------------- Apache processes --------------
PID PPID Threads VMSize Private Name
----------------------------------------------
16483 1 1 9.7 MB 0.2 MB /usr/local/apache2/bin/httpd
22344 16483 1 10.0 MB 0.6 MB /usr/local/apache2/bin/httpd
22693 16483 1 10.1 MB 0.6 MB /usr/local/apache2/bin/httpd
22695 16483 1 10.4 MB 0.8 MB /usr/local/apache2/bin/httpd
22710 16483 1 10.0 MB 0.5 MB /usr/local/apache2/bin/httpd
22711 16483 1 10.4 MB 0.8 MB /usr/local/apache2/bin/httpd
22712 16483 1 10.0 MB 0.5 MB /usr/local/apache2/bin/httpd
22726 16483 1 10.1 MB 0.6 MB /usr/local/apache2/bin/httpd
22729 16483 1 10.1 MB 0.6 MB /usr/local/apache2/bin/httpd
22746 16483 1 10.0 MB 0.4 MB /usr/local/apache2/bin/httpd
22751 16483 1 10.0 MB 0.4 MB /usr/local/apache2/bin/httpd
22768 16483 1 10.0 MB 0.5 MB /usr/local/apache2/bin/httpd
22770 16483 1 9.8 MB 0.3 MB /usr/local/apache2/bin/httpd
22771 16483 1 9.8 MB 0.2 MB /usr/local/apache2/bin/httpd
22772 16483 1 9.8 MB 0.2 MB /usr/local/apache2/bin/httpd
### Processes: 15
### Total private dirty RSS: 7.11 MB
--------- Passenger processes ---------
PID Threads VMSize Private Name
---------------------------------------
16505 13 7.6 MB 0.6 MB /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/ApplicationPoolServerExecutable 0 /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/bin/passenger-spawn-server /usr/bin/ruby /var/rails/tmp/passenger.16483/info/status.fifo
16506 1 7.4 MB 4.5 MB Passenger spawn server
17566 1 48.1 MB 35.5 MB Rails: /var/rails/huga
19798 1 53.7 MB 39.7 MB Rails: /var/rails/hoge
19800 1 51.1 MB 37.3 MB Rails: /var/rails/hoge
22320 1 37.9 MB 30.1 MB Passenger ApplicationSpawner: /var/rails/huga
22325 1 51.0 MB 37.2 MB Rails: /var/rails/hoge
22327 1 52.4 MB 38.5 MB Rails: /var/rails/hoge
22329 1 37.6 MB 29.6 MB Rails: /var/rails/hoge
### Processes: 9
### Total private dirty RSS: 252.97 MB
項目の説明
VMSize
仮想メモリ領域のサイズPrivate
ディスクとの同期が取れていない物理メモリの領域のサイズ(dirtyと表記されるもの) .
3.0以降
--------- Apache processes ----------
PID PPID VMSize Resident Name
-------------------------------------
644 1 15.6 MB 7.5 MB /usr/apache2/2.2/bin/httpd
25364 644 15.0 MB 4.1 MB /usr/apache2/2.2/bin/httpd
652 644 15.0 MB 4.1 MB /usr/apache2/2.2/bin/httpd
653 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
655 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
656 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
25282 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
25706 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
26280 644 14.9 MB 2.9 MB /usr/apache2/2.2/bin/httpd
25284 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
25283 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
6255 644 15.0 MB 4.3 MB /usr/apache2/2.2/bin/httpd
-------- Nginx processes ---------
---- Passenger processes ----
PID VMSize Resident Name
-----------------------------
648 4.6 MB 3.0 MB PassengerWatchdog
649 5.5 MB 4.0 MB PassengerHelperAgent
651 10.6 MB 5.2 MB PassengerLoggingAgent
ApacheとNginxとWebサーバーのプログラムごとで表示されるようになりました。自分の検証環境はApacheで動作させているので、Nginxで動いているプロセスは表示されていません。
項目の説明
VMSize
仮想メモリ領域のサイズResident
物理メモリの領域のサイズ.
また、3.0より前のバージョンだとapxs, httpdにパスが通ってないとエラーになり実行できません。
その場合、
$ APXS2=[apxsのパス] passenger-memory-stats
か、または、
$ HTTPD=[httpdのパス] passenger-memory-stats
とすれば、実行できます。また、root権限で実行しないとPrivateの合計が取得できず表示が以下のようになります。
### Total private dirty RSS: 0.00 MB (?)
サイトの動きが怪しい時など、前回紹介したpassenger-statusと合わせて使ってもらえると、怪しいプロセスを見つけるのに便利かと思います。それでは。