
私が管理している Web サイトが、今日、一日中オンラインになったりオフラインになったりしているようです。何が問題の原因なのか全く分からないので、どこから始めたらよいかアドバイスを求めています。このサイトは Wordpress ベースです。
私が知っていることは次のとおりです。
私は、サーバーに毎分 ping を送信し、サーバーが応答しない場合は電子メールで通知するプログラムを使用しています。これにより、サイトがオンラインまたはオフラインになっている時間を正確に把握できます。サイトは、午後 8 時から午後 12 時までは 12.28、午前 1 時頃は 12.29 です (ニューヨーク市のタイムゾーンで、以下の時間はすべて同じタイムゾーンです)。
上昇/下降時にはメモリ使用量に大きな負担がかかっていることがわかります。サイトがオンライン/オフラインになるときの負荷平均を見てください(http://screencast.com/t/BRlfXkqrbJII)。次に、このコマンドを実行してhttpを再起動しました(http://screencast.com/t/usVtYWZ2Qi) するとメモリ使用量はこのように減少します (http://screencast.com/t/VdTIy3bgZiQB)。http を再起動してから 1 時間後、サイトがオフライン/オンラインになったため、http を再起動してもあまり効果がありませんでした。
サイトがオフライン/オンラインになるときに、topコマンドを実行すると次のようになります(http://screencast.com/t/zEwr7YQj3)。サイトが最低レベルにあるときのトップコマンドは次のようになります(http://screencast.com/t/eaMfha9lbT- したがって、これは「通常」と呼ばれます。
帯域幅レポートはこちら(http://screencast.com/t/AS0h2CH1Gypq)。
交通量はそれほど多くないようです(http://screencast.com/t/s7hrWNNic1K) ですが、私の時間を見ると、サイトがアップ/ダウンしているのが理由の 1 つでしょうか?
私はMedia Templeでdvp Nitroパッケージを持っています(http://mediatemple.net/webhosting/nitro/)。
そこで、この時点で、この問題の原因は何なのか、また、この問題を正確に特定するにはどうすればよいのかを解明するために、助けをお願いしたいと思います。どんな助けでも大歓迎です。
答え1
負荷平均は 30 代と高く、CPU は 100% ビジー状態です。CPU 使用率は HTTPD プロセス全体でほぼ均一なので、特定のプロセスが問題なのではありません。基本的に、サーバーは受信する同時 HTTP 要求の数を処理できません。
ページを作成するために必要な処理の量を減らすために何かできるかもしれません。
Apache サーバーのログを確認して、なぜロードが不均一なのかを調べてみてください。DDOS 攻撃の標的になっている可能性があります。その場合、影響を軽減するために実行できることがあります。
そうでなければ、より大きなサーバーが必要になります。
MediaTempleに問題があるのかもしれません - 参照トラフィックの多いWordpressウェブサイトを最適化するにはどうすればいいですか?
答え2
私は1分ごとにサーバーにpingするプログラムを使用しています
そうすると、Web サイトが存在するシステムとユーザーの間にあるすべてのネットワーク デバイスを監視することになります。実際の Web サイトを除くほぼすべてのものを測定していることになります。もちろん、Web サーバーを実行しているコンピューターが ping に応答できない場合は、HTTP 要求にも応答しない可能性があります。
提供されている他の詳細を見ると、問題の原因は HTTP 処理であるように見えますが、HTTP 処理が原因で ping に応答しない場合は、サーバーの設定が非常に悪いことになります。
これは DOS 攻撃である可能性がありますが、どこかで競合状態が発生している可能性の方が高いと思います。HTTP トラフィックに何が起こっているのでしょうか? いくつかのホストからアクティビティが急増していますか? 応答時間は負荷平均より進んでいますか、それとも遅れていますか?
あなたが提供してくれたグラフやレポートは少しは役に立ちますが、診断の根拠となる情報はほとんどありません。ホット レートを時間単位ではなく、せいぜい分単位で平均化して確認する必要があります。0 時の急上昇はどうでしょうか。奇妙に思えます。
問題が発生している場所を確認するために、%D のログ記録を開始し、mod-log-firstbyte をインストール/構成することもできますが、PHP の自動先頭追加を使用すると、はるかに影響が少なくなります。たとえば、次のコードでは、処理の開始時にログ エントリが書き込まれ、完了時にリクエストの処理で行われた作業に関する多くの情報が記録されます。
<?php
global $error_log, $start_time;
// IIRC wordpress implement output buffering so no need to do it here.
$error_log=@fopen('php://stdin','w');
$start_time=microtime(true);
@fputs($error_log, date('r')
. getmypid() .
. " started \""
. $_SERVER['REQUEST_URI'] . '"');
@register_shutdown_function('log_complete');
function log_complete()
{
global $error_log, $start_time;
$r=getrusage();
@fputs($error_log, date('r')
. getmypid() .
" finished " .
memory_get_usage() . ' ' .
microtime(true)-$start_time . ' ' .
var_export($r, true));
}