はげあたま.org

*

さくらのVPS 1GプランでWordPress運用はやっぱり厳しさが残りそう

   

前回の概要(?)など

『さくらのVPS 1Gプランで真面目にWordPress運用は厳しい!?』という先日の記事の続きになります.

VPS 2コア1GBのサーバーなら個人ブログレベルの規模は余力で捌けて,ダウンタイム発生くらいしか問題にならないかと思っていました.しかし,概算してみると3PV/秒しか処理できないという結果になって,何か大きな計算間違いあってくれと思いながら記事に起こした次第です.

しかし,割とWEB系の人の目にも止まった割には,致命的な計算ミスが指摘されるわけでもなく,あながち間違ってないのかも??? データベース叩きまくって秒間数万アクセスを捌いてそうなソシャゲ屋とかどんな魔法とリソース使ってるんだよ……・.

そんなわけで,せっかくですしもう少し詳しく検証してみます.まず,前回書くべきだったWordpressとApache2の現状環境です.

 

apache2.conf(Debian系以外でのhttpd.conf)周り

  • StartServers 5
  • MinSpareServers 5
  • MaxSpareServers 10
  • MaxClients 150 → 40
  • MaxRequestsPerChild 0→500

負荷かけながらメモリ消費量の推移見つつ調整した値です.さくらの社長の1GBメモリ、2コア程度のサーバ(さくらのVPS 1Gプラン相当)でいつも行っている設定と同じ程度になったので,大きく間違っていないと思ってますが,WordPress使ってるとこれでも大きすぎる感が.

  • KeepAlive On
  • MaxKeepAliveRequests 100→50
  • KeepAliveTimeout 15→10

この辺はいまだに正解がわかりません.うちのサイトのロード時間は3~5秒程度っぽいので,その間はセッション張っておきたいですし,むしろ混雑して応答待ちが長くなった時にタイムアウト迎えたらどうなるのか謎なので10秒程度確保してたんですが,Web屋のネタ帳さんのアドバイスではOffを推奨との事です.確かに,うちだとサイトロードのボトルネックはSNS系やらFlickrの巨大画像による外部リソースが多いので,Offでいいというのは理にかなってますね.Offへ変更して様子見してみます.

余談ですが,先ほどMacからabコマンド叩いてみたら何か変なのでググったら,Lionのabはゴミなので自前でapacheをコンパイルして中身引き出せって話らしく,白目剥いてます.

 

WordPress周り

  • WP Super Cacheとかmoキャッシュ系導入済み
  • Head CleanerでjsとCSSの整理してたが,はてなスターが効かなくなったので一時停止中.
  • 管理側で重めのプラグイン回してるけど,そっちは止めたくない.(しかしそのせいでphpのmemory_limit低く設定すると管理画面開くだけでWordPressが真っ白になる)
  • php-apc未稼働(テスト済み.効果あり.ただし,導入するとWP Super Cacheとの相性悪いらしくたまに真っ白ページ吐くので対策後に改めて導入予定)
  • CDNとかめんどくさくて大げさなのでノーサンキュー

ひとまずこんな所ですが,apc入れてもApacheが1プロセス30MB食ってるんですよ.前回のコメント欄でapcにてWordPressが12〜15MBで回せると言う話もあったので,Apache2本体の5MB程度と合わせて20MB程度にしたいものです.(それでも付け焼き刃感が拭えませんが)

 

先達の例

一番わかりやすい例で『さくらのVPSで一日6万PVを処理するためにしたこと』がありますが,512MB時代とは言え,phpとapacheを最低限に削ったconfigureでコンパイルして『Apacheは起動するとデフォルトで5個ぐらいのプロセスを起動するのですが6万PVを処理するには平均で70プロセス程度、ピーク時で100プロセス程度起動します。』という世界なので,現状の環境で一日1万PVの処理は厳しいのかもしれません.

 

nginxの可能性

 

そう,そういう情報というかテクニックを知りたいんです.高負荷時だと並列処理に優れて,軽量なnginxの独壇場なんですかね.

こちらも研究者の端くれなので,明らかにオーダーの違う数値は自分の間違いを疑いますから,目安があるだけで違います.けれど,よくよく考えてみるとコンスタントに10PV/秒捌ければ余裕で1万PV/時ですし,そんなに桁違いなわけでもないのか.

だが,本来PHP動かす用途じゃないnginxをApacheと差し替えるほど頑張ってWordPress回したいわけじゃないんですorz

 

結論

大きく計算が間違っているわけでもなく,数百PV/秒なんて処理は到底望めないものの,数PV/秒でもそんなに困る事態なわけではないって結論ですかね.別に1分間サイトがダウンするだけで大きな損失が出る!なんて企業サイトなわけでもないですし,ある程度弄った状態で細々とやっていくのが吉でしょう.

うーむ,現状はそこそこ人が集まる記事書いても3000PV/日程度なので1万PV/時とか考える必要なさそうなんですが,SNSなどの普及により数百PV/分以上の突発ピークはあり得るんですよね.Amazon EC2のスケーリングメリットが少し理解できました.

それでも,やっぱりApacheのデフォルト値であるMaxClients 150にVPS丸1台割いても全く到達できないのは納得できないなぁ.こちとら,単純に文章流したいだけなんですけど…….

 

追記

別にさくらのVPSが悪いというわけではなく,1GBのメモリとLAMP環境の限界ですよって話です.

さくらのVPS自身は,SFTPだと200Mbpsとか出てドン引きするぐらい早い上,クセも無くて,非常にいいサービスだと思います.100GBじゃ足りないし,次の更新以降ではもっと上位プランにしたいですね.

 - WEB