
Hinemosu
行きすぎた最先端を目指す hide10 の個人ブログ

さくらのVPS 2Gで動かす”WordPress on nginx with FastCGI”が安定してきた
当ブログ「Hinemosu」は、さくらのVPS(仮想専用サーバ) 2GでUbuntu OSを動かし、その上で”WordPress on nginx with FastCGI”な環境を構築しています。
慣れないnginxでのチャレンジでしたが、大きな不具合もなく安定稼働しているようで、取りあえずは一段落なのかな?と言ったトコロ。
そんな現状の覚え書き的に、サーバ監視ツール”munin”で取得したグラフをペタペタと貼っておきます。

nginxをWordPress用に設定する
さくらのVPS 2G、”WordPress on nginx with FastCGI”でApache Bench
当ブログは「さくらのVPS 2G」上で、”WordPress on nginx with FastCGI”の環境を構築しています。
現状のサーバ性能を確認するためApache Benchで性能測定してみました。
「さくらのVPS 2G」+ Ubuntuで”WordPress on nginx with FastCGI”環境を構築する
さくらのVPS 1.5Gから、さくらのVPS 2Gへ移行した時の作業メモです。基本的に上から下に向かって作業しています。
OSをUbuntuに入れ換え、Webサーバとしてnginxを使用し、WordPressを高速に、且つ安定して稼働させるのが目標です。
あくまで自分用メモですので、内容の正当性は保証しません。特にnginxは初めてのチャレンジなので「正しくない」設定の可能性があります。
このメモは随時更新されます。参照する場合は参考までにどうぞ。
さくらのVPS 2Gに移行しました
これまで使用していた「さくらのVPS 1.5G」から、「さくらのVPS 2G」に移行しました。
この記事が読めていれば、あなたは「さくらのVPS 2G」にアクセスしていることになります。
WordPress用のMySQLチューニングにチャレンジしてみた
さくらのVPS 1.5Gに移転してメモリに余裕が出来たこともあり、MySQLの設定値などを見直してみました。
前提条件として、サーバの搭載メモリは1.5GB、スワップに4.9GB割り当て。ApacheとMySQLが同一サーバで動いています。他サービスなどは動かしておらず、WordPressで1つのブログが動いています。
一日のセッションは8千ぐらい、PVは1万5千前後で、ロボットを含めたUUは1万程度です。
ネットの各種情報を漁りながら検討した結果、まずはこんな感じに落ち着きました。
Ubuntu: スワップファイルを追加した
さくらのVPS 1.5Gで、OSをUbuntuに入れ換えた時、自動パーティション設定で進めたら、スワップパーティションが900MB割り当てられました。
ところが知人に「900MBでは少なすぎる」と指摘されたので、スワップファイルを追加してスワップ領域を増やしてみました。
具体的な手順は以下の通りです。
MuninでMySQLも監視
サーバ監視ツール「munin」で、MySQLの状態監視も行うように設定変更しました。
ここでは既にmuninが動作していることを前提にしています。muninのセットアップは「muninインストール : さくらのVPS 1.5G、OS UbuntuでWordPressを動かす作業メモ – Hinemosu」を参照下さい。
具体的な手順は以下の通りです。
さくらのVPS 1.5G、OS UbuntuでWordPressを動かす作業メモ
さくらのVPS 512から、さくらのVPS 1.5Gへ移行した時の作業メモです。
基本的に上から下に向かって作業しています。OSをUbuntuに入れ換えて、WordPressを安定稼働させるのが目標です。
あくまで自分用メモですので、内容の正当性は保証しません。このメモは随時更新されます。参照する場合は参考までにどうぞ。
移行時に下記サイトを参考にさせて頂きました。貴重な情報提供ありがとうございます。
さくらのVPS、ApacheとWordPressの軽量化で安定稼働が見えてきた
本日も「さくらのVPS」にUbuntuでLAMP環境を構築し、その上でWordPressを動かすオハナシです。
色々と工夫を重ねた結果、「さくらVPS」のメモリ512M環境でも、1日1万PV近いトラフィックを捌けるようになってきました。
さくらのVPS、引き続きApacheチューニング
昨日はApacheの「Out of memory」エラー対策として apache2.conf の設定を変えました。
しかしMaxClientsを下げすぎたようで、アクセスピーク時にCPUのロードアベレージが下がらない状態になってしまいました。
仕方なくtopコマンドで状態を監視しつつ、MaxClientsを少しずつ変更し、120まで上げたところで一段落。
そんな流れを踏まえ、現在の “/etc/apache2/apache2.conf” には以下の変更を加えています。
MaxKeepAliveRequests 50 KeepAliveTimeout 5 <ifmodule mpm_prefork_module> StartServers 8 MinSpareServers 8 MaxSpareServers 8 MaxClients 100 MaxRequestsPerChild 4000 </ifmodule>
基本ポリシーとしては「遅くても良いから省メモリー」です。以下、変更内容の覚え書きです。
MaxKeepAliveRequests
“MaxKeepAliveRequests”は、KeepAliveを続けるリクエストの最大数だそうです。日本語で言い換えると「1ページを一度で読み込む為に必要なリクエスト数」と言うことらしいです。
初期値は100ですが、テキストメインの当ブログは少な目で良いだろうという判断で50まで下げてみました。
KeepAliveTimeout
“KeepAliveTimeout”は、KeepAliveを続ける秒数です。初期値は15秒ですが、思い切って5秒まで小さくしてみました。
StartServers, MinSpareServers, MaxSpareServers
StartServers, MinSpareServers, MaxSpareServersは待機プロセスの数を決定するそうです。
TOPで観察したところ、これがメモリ残量に大きく係わっているようだと分かりました。
Start, Min, Maxを揃えてオーバーヘッドを無くしつつ、上限を8に絞ることでメモリの空き容量を増やしました。
StartServers, MinSpareServers, MaxSpareServers
MaxClientsは昨晩のピーク時に暫定対策として120まで上げましたが、またちょっと下げて100にしてみました。
これも個々のプロセスのメモリ使用量に係わる値のようなので、省メモリサーバでは低めにした方が良いようです。
MaxRequestsPerChild
MaxRequestsPerChildは「個々の子サーバプロセスが扱うことのできるリクエストの制限数」だそうです。初期値は ‘0’ で制限されません。
TOPで観察したところ、動いてないけどメモリを食ってるプロセスが見えたので、ある程度行ったら再生成されるよう制限を設けてみました。
これで不正なメモリリークの予防と、積極的なメモリ解放が行われることを狙っています。
さくらのVPS、Apacheチューニング
興味のないヒトにはくどいでしょうが、本日も「さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット」にUbuntuでLAMP環境を構築し、その上でWordPressを動かすオハナシです。
なかなか安定運用に持って行けてませんが、http無応答時にコンソールを覗くと、Apacheさんが「Out of memory」を吐きまくっていることに気がつきました。
Out of memoryについて
まず「Out of memory」に付いて調べました。
linuxの初期設定では総メモリ容量(実メモリ+Swap)以上の実効メモリ容量を要求された場合、実際には足りないのに大らかな気持ちで要求を受入れてしまうそうです。
結果として必要なメモリが足りない事態が発生した場合、適当なプロセスをkillしてしまうそうで、これを行うのが「Out Of Memory Killer」ことOOM Killerさんのお仕事で、OOM Killerさんが吐くエラーが「Out of memory」として表示されていたようです。
OOM Killer概要:
Out Of Memory Killerのこと。Linuxのデフォルトの動作では、プロセスがメモリを要求した場合、総メモリ使用量が実メモリ+swap以上であっても、ある程度許可するようになっている。これは、各プロセスが要求したメモリをすべて使うわけではないという経験的な法則により、できるだけ多くのプロセスを起動するためにそのように動作になっているようである。そのため、あるプロセスが確保できたはずのメモリを使おうとし、実際にメモリが足りない場合カーネルが適当なプロセスを選択し、そのプロセスをkillしてしまうことをOut Of Memory Killerという。
Apacheのチューニング
OOMエラーを理解することにより、Apacheの「なにか」がメモリを浪費しているのでは無いか?というアタリを付けました。
なぜApacheさんがメモリを食いまくっているか?と言う根本的な理由は分からないですが、取りあえずの対策としてApacheの設定をチューニング。
/etc/apache2/apache2.confを開き、mpm_prefork_moduleの設定を以下のように変更しました。
<ifmodule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 34 MaxRequestsPerChild 4000 </ifmodule>
一番大きく変更したのは「MaxClients」の値です。初期値では150になっていましたが、省メモリ環境での運用であることを踏まえ、34に制限してみました。これで良い変化があると良いんだけどな~。
Apacheのチューニングに付いては、『さくらのVPSのその後@2010-10-25 | それでも地球はまわっている』や、『[Slicehost] OOM Killer(Out Of Memory Killer)の対策 – delab』を参考にしています。貴重な情報ありがとうございます。