2012年9月21日金曜日

PHP5.4+APCのご利用上の注意


PHP5.4+APCのご利用上の注意

--チューニングのTipsなどなど

経緯

フリーのoptimizerの場合は、eAcceleratorとAPCが有名だけど、eAcceleratorはphp5.4に
対応しておらず、しかたなくAPCを使いますか。という状況になったりする。

ちがい

デフォルトのメモリキャッシュの利用サイズがちがう
⇒APC         :すくなめ(Binaryによって数値が違うけど、remi-testのパッケージだと64M)
⇒eaccelerator:0(無制限)

チューニング

Q,<メモリの割当て設定を変更しないとパフォーマンスが下がる可能性が
A,APCのキャッシュは固定値を設定する為、サーバの実メモリ容量を超える設定になってしまっている可能性があるよ

たとえば:メモリ4GBのマシンでapacheを運用している場合

Apache子プロセスが1個当たり10MBのメモリを利用しているとして、Maxclient 256にチューニングしてたとする。
APCは子プロセスごとにapc.shm_sizeの数値に従い、メモリを確保するので…
----------------------------------------------------------------------------
今まで
256 * 10MB + もろもろ          = 3GBそこそこ    < 4GB だった物が、
----------------------------------------------------------------------------
変更後
256 * (10MB + 64MB) + もろもろ = 18.5GBおーばー > 4GB になる
----------------------------------------------------------------------------
こんな感じで、わっさーと溢れる
動きとしてはCPU使用率が少ない割にLoadAvarageが跳ねて、数字の割にコマンドの動作などは軽いような感じ

ということで、
----------------------------------------------------------------------------
チューニング例1
48  * (10MB + 64MB) + もろもろ = 4GB弱くらい    > 4GB
処理速度を優先
----------------------------------------------------------------------------
チューニング例2
256 * (10MB +  4MB) + もろもろ = 4GB弱くらい    > 4GB
同時アクセス数を優先
----------------------------------------------------------------------------
こんな感じにターゲットを絞って設定をいれてあげる必要がありますよ。と。
こうする事で、CPU使用率とLoadAvarageがシームレスにいい感じなっていきます。

※Apacheの子プロセス自体が利用しているメモリ量は、psコマンド等でRSSの数値を確認してネ

おわり

0 件のコメント:

コメントを投稿