[まとめ] Amazon EC2 Micro InstanceでWordPressを動かす方法

Movable TypeからWordPressへの移行:(併せてお名前.com VPSからECへの移行)

メモリの少ないAmazon EC2 Micro InstanceでWordPressを動かすのはなかなか大変です。
高負荷のため、当初全く動かず絶望しましたが、チューニングによって、ほぼ問題なく動くようになりました。

■チューニングのポイント

  1. WP Super Cache(プラグイン)を使い、WPのコンテンツをキャッシュするようにする。
    ※あまりたくさん溜まるとかえって遅くなるので定期的に消した方がいいかも知れません。
  2. MySQL Query Cacheを使い、照会もキャッシュするようにする。
  3. httpd.confの設定を変更し、httpd(Apache)の起動数を制限する。・・・現在6個
     これと併せて瞬間的にプロセスを使いきってしまう可能性が高いため、httpd.confの設定を変更し、タイムアウトまでの時間を短くしてます。
  4. yahooのクローラーも意外と曲者で、一気に来るため接続できなくなったり高負荷になります。xxxxx.crawl.yahoo.net を必要に応じてブロックします。(1年分のログを確認しましたが、IPアドレスは、3つくらいです。)

    あとは、どうでもいいと思いますが・・・
     

  5. 動的に生成しているRSSやYahooPipesなどは、動的に取得するのではなく、定期的に取得し、ローカルにファイルとして置くようにしました。
  6. カテゴリーなどURLが変わってしまったものは、リダイレクトで旧URLから新URLに飛ばしてますが、.htaccessで行うのではなく、httpd.confに組み込んでます。
  7. カウンターのCGIを大幅に書き換えました。
  8. MTを併存中は、サーチのCGIなどが重いので止めました。

以下、計測データ。


■最終的に、httpd は6本に(+1はリスナー)
# ps aux | grep http
root      2839  0.0  1.8 277972 11516 ?        Ss   16:25   0:00 /usr/sbin/httpd
apache    6335  1.1  7.6 313524 46628 ?        S    20:53   0:18 /usr/sbin/httpd
apache    6477  0.9  7.3 311640 44948 ?        S    21:03   0:09 /usr/sbin/httpd
apache    6478  1.0  7.7 314304 47392 ?        S    21:03   0:11 /usr/sbin/httpd
apache    6544  1.0  6.4 306444 39204 ?        S    21:06   0:09 /usr/sbin/httpd
apache    6561  0.7  7.0 310264 43040 ?        S    21:07   0:06 /usr/sbin/httpd
apache    6692  0.3  7.5 313612 46256 ?        S    21:16   0:00 /usr/sbin/httpd
root      6771  0.0  0.1 103076   744 pts/1    D+   21:21   0:00 grep http

■瞬間の接続状況を見ると・・・
# netstat | grep http | sort -k 5
tcp        0      0 ip-10-128-33-105.ap-so:http b3091087.crawl.yahoo.:55009 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http b3091087.crawl.yahoo.:57033 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http b3091173.crawl.yahoo.:39594 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http crawl-119-235-237-17.:37278 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http crawl-119-235-237-20.:47825 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http crawl-66-249-68-174.g:40500 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http crawl-66-249-68-174.g:45007 TIME_WAIT   
tcp      451      0 ip-10-128-33-105.ap-so:http hlf05.thumb.yahoo-net:34820 ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http k176254.dyna:de-cache-query ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http k176254.dynam:visionpyramid ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http k176254.dynamic.:swldy-sias ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http k176254.dynamic.ppp.:de-noc ESTABLISHED 
tcp        0  51800 ip-10-128-33-105.ap-so:http k176254.dynamic.ppp.:hermes ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http k176254.dynamic.ppp.as:nmsd ESTABLISHED 
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62102 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62114 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62115 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62116 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62117 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p1237-ipbfp604kanazaw:62118 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p6253-ipad203funabasi.:3325 TIME_WAIT   
tcp        0      0 ip-10-128-33-105.ap-so:http p6253-ipad203funabasi.:sftu TIME_WAIT 


■負荷は、比較的軽い状態。
# vmstat 1 100
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  31972  26048  50924 186852    0    0     4     7   23   22  3  1 86  0 11
 0  0  31972  26048  50924 186884    0    0     0     0  142   30  0  0 100  0  0
 0  0  31972  26048  50924 186884    0    0     0     0   22   13  0  0 100  0  0
 0  0  31972  26048  50924 186884    0    0     0     0   16   13  0  0 100  0  0
 0  0  31972  26048  50940 186868    0    0     4   116   43   33  0  0 99  1  0
 1  0  31972  16600  50940 186896    0    0     0     0  207  191 19  1 80  0  0
 0  0  31972  26676  50940 186896    0    0     0     0  150  106  5  1 94  0  0
 0  0  31972  26676  50940 186928    0    0     0     0   58   17  0  0 100  0  0
 0  0  31972  26676  50940 186928    0    0     0     0   12   13  0  0 100  0  0
 0  0  31972  26676  50940 186928    0    0     0     0   16   17  0  0 100  0  0
 1  0  31972  26684  50956 186912    0    0     0   120   95   74  9  1 90  0  0
 0  0  31972  26684  50956 186912    0    0     0     0   54  110  5  0 95  0  0
 0  0  31972  20476  50956 186928    0    0     0     0   57   79  5  1 94  0  0
 0  0  31972  26328  50956 186928    0    0     0     0   60   41  5  1 94  0  1
 0  0  31972  26336  50956 186928    0    0     0     0   19   18  0  0 100  0  0
 0  0  31972  26460  50956 186928    0    0     0     0   61   25  0  0 100  0  0

.

 


※APCも入れました。

/etc/php.d/APC.ini の設定 (パラメータを省略するとページが真っ白になります。)

extension="apc.so"
apc.shm_size="64M" 
apc.ttl="3600" 
apc.user_ttl="3600" 
apc.slam_defense="Off"

インストール後、CPU使用率が100%に張り付くことはなくなりました。(1/26 9:30に導入。9:30の停止前後を比較するとその差歴然。)


 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください