QudoワーカーのCPU使用率がハンパナイので調査
Twienをリリースしたのは良いけれど、まともに運用できていません。
QudoワーカーをQudo::Parallel::Managerを使用して処理しています。 Qudo's document Wiki- workerの簡単管理
しかし、workerのCPU使用率が半端なくて、2coreのさくらVPSで load averageも5とか平気で超えてしまう。 だから、サーバもダウンしまくって、どうしようもない状態となっています。
でも、なんでそんなにCPU使っているのかサッパリ分からないのでどうやって調査しようか 悩んでいた。
perlのプロファイラを使おう
インストールは簡単cpanm一発です。
cpanm Devel::NYTProf
環境変数の設定
今回は、forkするものを測定するのでtokuhiromさんの Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ を参考にしました。
ランチャーの修正
#!/bin/bash export NYTPROF=sigexit=int perl -d:NYTProf twien_worker.pl
CPU利用率があがった状態にてCTRL+Cで停止。 nytprofhtmlでプロセスIDの入ったファイルを指定した
nytprofhtml -f nytprof.out.4844
HTML::ExtractContent::extractで固まっているように見受けられる。ふむふむ。
結局、HTML::ExtractContent::extractに渡す文字列がmp3とか、jpgとかの拡張子のときに、固まっていると分かった。 むむむぅ。さて、対策をどうするか・・・