動かざることバグの如し

近づきたいよ 君の理想に

RailsでpumaのCPU使用率を取得する方法

環境

railsの負荷を計測するのは一筋縄ではいかず、一発でこうすれば取得できるってのはないのだが、なんとかして負荷度を計測したい。

ってときにtopコマンドでpumaのCPUの使用率を取得すると概算できることがわかったのでメモ

取得方法

top -bc -n 1 | grep $(cat /var/www/article_polls/shared/tmp/pids/puma.pid)| awk '{s += $9} END {print s}'

puma.pidのパスは各自変えて

ポイントは以下

  • CPU使用率の取得にpsコマンドを使ってはいけない 別にtopコマンド使わなくてもpsでええやんと思うかもしれない 実際自分もそう思っていたがだめ
  • topコマンドで -bcをつけると出力だけ行って終わる
  • topコマンドの$9の部分はOSによって若干変わる
  • こればっかりは仕方ないので実際に叩いてCPU使用率が記載されている列を数えるしかない 例では9列目
thr3a@rails:~$ top -bc -n 1 | grep $(cat /var/www/article_polls/shared/tmp/pids/puma.pid)
10797 thr3a     20   0  276996  75764   1940 S  0.0  7.5   5:56.77 puma 3.11.3 (unix:///var/www/article_polls/shared/tmp/sockets/puma.sock) [2018+
10801 thr3a     20   0  760276  93956      0 S  0.0  9.3  25:37.99 puma: cluster worker 0: 10797 [20180610031659]
17051 thr3a     20   0   14728   1120   1024 S  0.0  0.1   0:00.00 grep --color=auto 10797