2016.09.14
【さくらVPS】Webサーバーが時々遅くなる問題
最近そんなものに悩まされています。
たまにこのブログへアクセスするとやたら返答が遅い時がよくある。
原因を探すためにSSHでログインしてtopで確認するとhttpdのプロセスが画面いっぱいになっている。
負荷としてはIOウェイトが90%位を占めている。
LoadAverageも60を超えるている状態でもうサーバーがまともに動けない状況に陥っている。
大抵は放っておけば治るわけですが気分が悪いのでApacheを再起動することが多い。
こんな状態になるのはここ最近から。
muninではそのログらしきのが残っている。
BOTのアクセス量がふえているのでしょうかね?
さくらVPSのIO関係の厳しさは結構色んな所で叫ばれている。
大体1Mくらい出ると規制の対象になるとのこと。
自鯖で計測しているmuninだとわかりづらいので
さくらVPSで見れるDiskの使用状況を見てみる。
毎日重いってわけではなく気づいたら重いって感じなので
このグラフ通り帯域制限がかかっているのではないでしょうか。
重くなる流れとしては以下の様な感じじゃないかな。
1. Apacheへ大量のリクエストがくる 2. httpdプロセスを大量発行 3. IO負荷増大、帯域制限かかる 4. httpdプロセスが処理出来ずにプロセスが積まれる 5. さらにApacheのリクエストが来る 6. さらにhttpdは作るが処理できずにさらに重くなる
処理が遅いだけでリクエストがなければゆっくり処理されて
いつかはすべての処理が裁かれて帯域制限も解除されて
いつもどおりの状況になるのでしょう。
大体の問題は見えてきたので対処方法を検討します。
まあ、httpdプロセスが大量にできて同時に処理するのが
問題となっているみたいなのでそうならないようにすればよい。
プロセス数の上限はhttpd.confで記述すれば対応可能。
これをやるのは大抵はメモリ不足の時にやるのですけどね。
以前、ServermanVPSでメモリが貧弱だった時がありそこでそんな対応をしていた。
そのログが残っていたのででそのまま有効にしてみる。
#コネクション数設定 #だいぶメモリが厳しいので動かなくなったら制限をかけること StartServers 2 MinSpareServers 1 MaxSpareServers 5 MaxRequestsPerChild 5 MaxClients 5 ServerLimit 5 Timeout 20 KeepAlive Off MaxKeepAliveRequests 1 KeepAliveTimeout 15
muninのログにもきっちり状況が出ていますし対応ができている感じがする。
topで眺めていても大量にhttpdプロセスができることはない感じがしている。
まずはこれで様子を見る感じでいい気がしている。
ServermanVPSではメモリに困ったが、さくらVPSではIO制限に困る。
格安のVPSはいろいろと制約が強いなとは感じてしまいます。
関連記事