2016.09.14

【さくらVPS】Webサーバーが時々遅くなる問題

最近そんなものに悩まされています。

最近唐突にWebが遅くなることがよくある

たまにこのブログへアクセスするとやたら返答が遅い時がよくある。

原因を探すためにSSHでログインしてtopで確認するとhttpdのプロセスが画面いっぱいになっている。
負荷としてはIOウェイトが90%位を占めている。
LoadAverageも60を超えるている状態でもうサーバーがまともに動けない状況に陥っている。

大抵は放っておけば治るわけですが気分が悪いのでApacheを再起動することが多い。
こんな状態になるのはここ最近から。
muninではそのログらしきのが残っている。
BOTのアクセス量がふえているのでしょうかね?
20160914_load-year

IO関係の厳しさが原因?

さくらVPSのIO関係の厳しさは結構色んな所で叫ばれている。
大体1Mくらい出ると規制の対象になるとのこと。
自鯖で計測しているmuninだとわかりづらいので
さくらVPSで見れるDiskの使用状況を見てみる。

やはり、伸びている部分が重いところとあっている気がします。
20160914_disk_day

週間のログだとこんな感じ。
20160914_disk_week

毎日重いってわけではなく気づいたら重いって感じなので
このグラフ通り帯域制限がかかっているのではないでしょうか。

重くなる流れとしては以下の様な感じじゃないかな。

1. Apacheへ大量のリクエストがくる
2. httpdプロセスを大量発行
3. IO負荷増大、帯域制限かかる
4. httpdプロセスが処理出来ずにプロセスが積まれる
5. さらにApacheのリクエストが来る
6. さらにhttpdは作るが処理できずにさらに重くなる

処理が遅いだけでリクエストがなければゆっくり処理されて
いつかはすべての処理が裁かれて帯域制限も解除されて
いつもどおりの状況になるのでしょう。

Apacheの同時処理数を少なくしてみる

大体の問題は見えてきたので対処方法を検討します。

まあ、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のログにもきっちり状況が出ていますし対応ができている感じがする。
20160914_apache_processes-day

topで眺めていても大量にhttpdプロセスができることはない感じがしている。
まずはこれで様子を見る感じでいい気がしている。


ServermanVPSではメモリに困ったが、さくらVPSではIO制限に困る。
格安のVPSはいろいろと制約が強いなとは感じてしまいます。

ニャッキ格闘列伝 > サーバー >

前の記事:
次の記事:

関連記事

コメントリスト

コメントなし

コメント



*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

こんなタグが使えるみたいよ:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>