鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Nginx+Mojolicious+Tengパフォーマンスチューニング

reverse proxyの設定が利いていなかった。

Plack::Middlewareのログで判明したのが、nginxが静的ページを返してなかったので、過去の自分のブログを見て設定を直して、静的ページのアクセスがアプリサーバに流れてこないようにした。

SQLの見直し

PerlBeginnersで教えてもらった。explain select でテーブル古スキャンが実行されていたので、インデックスを使うSQLに修正した。

バッファープールヒット率の調査

mysqlで以下のコマンドを発行してバッファープールヒット率を調査。 とりあえず、ヒットしているような・・・ freeページも1000あるし足りているようだ。

SHOW ENGINE INNODB STATUS\G
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 137363456; in additional pool allocated 0
Dictionary memory allocated 330672
Buffer pool size   8191
Free buffers       1024
Database pages     6731
Old database pages 2464
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 14358, not young 1846733
0.00 youngs/s, 0.00 non-youngs/s
Pages read 39461, created 237, written 38233
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 6731, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]

テーブルのデータとインデックスのサイズを知りたいとき - MySQL Casual

thread_cache

この辺は設定して損はないので設定してみた。max_connections 100に対して、thread_cache25 thread_cacheについて

メモリ不足か・・

vmstatでみたところ、結構な頻度でスワップが発生していた。 結局、いっぱいStarletのプロセスを上げていたり、mysqlあったりでメモリを使ってしまっているようで。 そのせいで早い時もあれば遅い時もあるんだなぁ。

f:id:kechiya:20140326212610p:plain