俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報#29 - 最近踏んだ地雷の様子

例にもよって話すことないから、
つらつらとパフォーマンスチェックの話でも。
しかも超簡易版の。

Codeigniterにはベンチマークライブラリがあるのですが、
もちろん我が用に拡張しております。
とはいえガチのベンチマークというより、ちょっと遅いなっていう時にチェックする程度のものとして使っております。
なので取得しているのはメモリと経過時間程度。
ただ、出来るだけ高速に稼働することや、気になった行で直ちにマーキングできることを最優先事項にして作成しております。
まぁ当たり前だと思うのだけれど。。。

ちなみに、PHPにはmemory_get_usageという便利な関数があり、
これが叩かれた時点でのPHPが使っている使用メモリを返してくれるみたいなのです。
ちょいとこの辺怪しい(PHPが使ってるメモリって、、、どゆこと?)部分もあるけれど、
まぁ相対値で見ていけばそんなに問題はないということで、僕は簡易に使っております。

そしてあんま話すことがないので、つい先日みっけた変な挙動について公開しながら、
俺がたまにやるページパフォーマンスの粗いチェック方法をご紹介いたします。
本当はブラウザでリアルタイムに見れたらいいんですけどね、、、
管理画面を充実させるマンパワーがございませんので、エクセルでグラフ書いたりするシーンもまだまだたくさんあるのです。
その辺加味した上で、さぁ参りましょう。

ページごとのメモリ最大使用量をチェックしていたら、
とあるページが「そんなにかかるかなぁ」という感じでメモリを食っていました。
newrelicでレスポンスタイムをチェックしても、別に大した問題はなさそうです。
レスポンスタイムは悪くないのにメモリ食ってんのか、、、キモい奴がおるな、ということで、詳細をグラフに書き出してみました。

このページはパフォーマンス的に危ない部分が多々あるので、
マーキングしている行が合計で100以上ございます。
なので割りかし綺麗に「どこで問題がおきてるっぽいか」を発見しやすかったし、
グラフにしてもわっかりやすく問題箇所がめっかった事例なので、ご紹介します。
はいドン。

f:id:tom_rc:20140814231832p:plain

わっかりやすいですね。
処理時間はそんなでもないのに、アホ見たくmemory usageが上がっている箇所がわかりました。
横軸にマークした行の名前が載っていますが、流石に全部見せるとはずかちーのでぼやっとさせてあります。
ただ、後に残っていないみたいなので単純なリークではなさそうです。 原因について詳しく書くつもりでしたが、驚くほど何も喋れないような箇所だったのであんま詳しく言えないのです。。。 じゃぁ意味ねぇじゃんか!って話ですね。今気付いた。 しょーもない!

まぁじゃぁ、
レスポンスタイムよくてもメモリ食ってるときあるから注意な!な!

こういう一つ一つのパフォーマンス地雷を撤去していく作業にはやくうつりたいものです。。。