swapを減らす
まず、必要なのは、メモリを使っているプロセスを見極めることです。
ほとんどデフォルトのままの設定であれば、apache + php でほとんどのメモリは食い尽くされます。
実際に調べてみると、まあひどい時には、apache + php で 1 GBほどのメモリを消費しているではありませんか・・・・。
どれくらいのメモリを使っているかは、簡単に調べることができます。
$ ps aux|grep http
root 24911 0.0 2.6 348560 13552 ? Ss Dec20 0:00 /usr/sbin/httpd
apache 24913 0.0 1.7 349584 8776 ? S Dec20 0:00 /usr/sbin/httpd
apache 24914 0.0 1.7 349584 8772 ? S Dec20 0:00 /usr/sbin/httpd
apache 24915 0.0 1.7 349584 8772 ? S Dec20 0:00 /usr/sbin/httpd
apache 24916 0.0 1.7 349584 8764 ? S Dec20 0:00 /usr/sbin/httpd
apache 24917 0.0 1.7 349584 8768 ? S Dec20 0:00 /usr/sbin/httpd
apache 24918 0.0 1.7 349584 8788 ? S Dec20 0:00 /usr/sbin/httpd
apache 24919 0.0 1.7 349584 8800 ? S Dec20 0:00 /usr/sbin/httpd
apache 24920 0.0 1.7 349584 8788 ? S Dec20 0:00 /usr/sbin/httpd
apache 25122 0.0 1.7 349584 8752 ? S 01:07 0:00 /usr/sbin/httpd
root 25184 0.0 0.1 65420 800 pts/0 S+ 02:09 0:00 grep http
$ cat /proc/24914/status
Name: httpd
State: S (sleeping)
SleepAVG: 98%
Tgid: 24914
Pid: 24914
PPid: 24911
TracerPid: 0
Uid: 48 48 48 48
Gid: 48 48 48 48
FDSize: 64
Groups: 48
VmPeak: 349588 kB
VmSize: 349584 kB
VmLck: 0 kB
VmHWM: 8772 kB
VmRSS: 8772 kB
VmData: 7312 kB
VmStk: 84 kB
VmExe: 308 kB
VmLib: 24540 kB
VmPTE: 588 kB
StaBrk: 2af6887fa000 kB
Brk: 2af68885f000 kB
StaStk: 7fffdde42f00 kB
Threads: 1
SigQ: 0/4095
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 000000018800466b
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003
Mems_allowed: 00000000,00000001
$
|
最初にapacheのプロセスを調べています。
そのあと、apacheのプロセスID(PID)を元に、cat /proc/
PID/status でプロセスの状態を確認できます。
VmData : 現在使っているswap領域サイズ
ここでは、7 MB のswapとなっていて、ほとんど、動いていないような状態です。実際に動作しているapacheでは、数百MBになるは当たり前のようになります。
VmPeak このプロセスがある時点で使っていた最大仮想メモリサイズ
VmSize このプロセスの仮想メモリサイズ
VmLck ロックされている(スワップアウトされない)メモリのサイズ (mlock(2) などでロックできます)
VmHWM このプロセスがある時点で使っていた最大物理メモリサイズ
VmData このプロセスの動的仮想メモリ領域のサイズ
VmStk スタックサイズ
VmExe 実行ファイル (テキスト領域) のサイズ
VmLib ロードされたライブラリのサイズ
VmPTE ページテーブルのサイズ
php + apacheのメモリを減らすには、
などの記事が参考になろうかと思います。
実際に、プロセス数を制限し、スレッド化を行うとかなりswap量を落とすことができます。
実際のこのサイトの場合、
何もしない状態 : 最大swap 約 1500 MB
プロセス数を制限し、スレッド化を実施状態 : 最大swap 約 200 MB
と抑えることに成功しました。ここまで抑えることができれば、MySQLもこのサーバーで動かせそうです。
実際に、メモリ使用量を抑えたバージョン+MySQLを動作させたときのリソースグラフです。
夜中0時、夜中3時くらいにディスクアクセスやネット伝送量が増えているのはデータベースのバックアップ・アップデートを夜中に自動で行っているためにです。
それ以外を見てみても、swapは、かなり減っていますから、ディスクへのアクセスが極端に減っていますね。
以下は、以前のリソースグラフです。
このリソースグラフからも、ディスクIOは、激減していますし、データベースをloalhostにしたのでネットワークの負荷もほぼ解消されました。
この程度だと、まあ、2台目は、あまり必要じゃなかった・・・・てこと?ですかね。
こんな感じで、簡単ですけどapacheやphpにチューニングを行うだけで、更に、さくらのVPSのパワーアップを図れましたね。
これぐらいのリソースの推移からすれば、カスタマイズさえしっかりできれば、おおよそ、10,000PV/DAY くらいはいけそうです。
さくらインターネットのVPS ( さくらのVPS )を試してみたい方は、
http://vps.sakura.ad.jp/からどうぞ。
無料お試し期間は14日です。
※お試し期間中は、OP25B設定、データ転送帯域に制約がありますから注意してください。
コメントを投稿 :