
Heute scheint eine von mir verwaltete Website den ganzen Tag über online und offline gegangen zu sein. Ich habe keine Ahnung, was das Problem verursacht, und suche daher nach einer Anleitung, wo ich anfangen soll. Es handelt sich um eine Wordpress-basierte Website.
Folgendes weiß ich:
Ich verwende ein Programm, das den Server jede Minute anpingt und mir eine E-Mail schickt, wenn der Server nicht antwortet. So weiß ich genau, wann die Site online und offline ist. Die Site ist zwischen 20:00 und 12:00 Uhr (12.28 Uhr) und um etwa 1:00 Uhr am frühen Morgen (12.29 Uhr) online. (New Yorker Zeitzone, und alle unten aufgeführten Zeiten liegen in derselben Zeitzone.)
Während der Hochs/Tiefs ist der Speicherverbrauch stark belastet. Sehen Sie sich die durchschnittliche Auslastung an, wenn die Site online/offline geht (http://screencast.com/t/BRlfXkqrbJII). Dann habe ich diesen Befehl ausgeführt, um http neu zu starten (http://screencast.com/t/usVtYWZ2Qi) und der Speicherverbrauch sinkt dann auf diesen Wert (http://screencast.com/t/VdTIy3bgZiQB). Eine Stunde nachdem ich http neu gestartet hatte, ging die Site offline/online, sodass der Neustart von http nicht viel geholfen hat.
Wenn die Site offline/online geht, führe ich den obersten Befehl aus und erhalte Folgendes (http://screencast.com/t/zEwr7YQj3). Hier ist ein Top-Befehl, wenn die Site am niedrigsten ist (http://screencast.com/t/eaMfha9lbT- daher würde man dies als „normal“ bezeichnen).
Hier ist ein Bandbreitenbericht (http://screencast.com/t/AS0h2CH1Gypq).
Der Verkehr scheint nicht so stark zu sein (http://screencast.com/t/s7hrWNNic1K), aber wenn ich mir ansehe, wie oft die Site hoch- und herunterfährt, könnte das einer der Gründe sein?
Ich habe das dvp Nitro-Paket bei Media Temple (http://mediatemple.net/webhosting/nitro/).
An dieser Stelle möchte ich um Hilfe bitten, um herauszufinden, was die Ursache dafür ist und wie ich dieses Problem eingrenzen kann. JEDE HILFE wird sehr geschätzt.
Antwort1
Die durchschnittliche Auslastung im 30er-Bereich ist hoch und die CPU ist zu 100 % ausgelastet. Die CPU-Auslastung ist bei Ihren HTTPD-Prozessen ziemlich gleichmäßig, es handelt sich also nicht um einen bestimmten Schurkenprozess. Ihr Server ist im Grunde nicht in der Lage, die Anzahl gleichzeitiger HTTP-Anfragen zu verarbeiten, die er empfängt.
Möglicherweise können Sie etwas tun, um den zur Erstellung einer Seite erforderlichen Verarbeitungsaufwand zu verringern.
Sie können die Apache-Serverprotokolle überprüfen, um herauszufinden, warum die Auslastung so ungleichmäßig ist. Möglicherweise sind Sie das Ziel eines DDOS-Angriffs. Wenn ja, können Sie die Auswirkungen abmildern.
Entweder das oder Sie benötigen einen größeren Server.
Vielleicht liegt bei MediaTemple ein Problem vor - sieheWie optimiere ich eine Wordpress-Website mit hohem Datenverkehr?
Antwort2
Ich verwende ein Programm, das den Server jede Minute anpingt
Dann überwachen Sie jedes Netzwerkgerät zwischen Ihnen und dem System, auf dem sich die Website befindet. Tatsächlich messen Sie so ziemlich alles außer der eigentlichen Website. Wenn der Computer, auf dem der Webserver läuft, nicht auf Pings reagieren kann, wird er wahrscheinlich auch nicht auf HTTP-Anfragen reagieren.
Betrachtet man die anderen bereitgestellten Details, scheint es tatsächlich die HTTP-Verarbeitung zu sein, die Probleme verursacht. Allerdings muss der Server sehr schlecht eingerichtet sein, wenn er aufgrund der HTTP-Verarbeitung nicht auf Pings reagiert.
Es könnte sich um einen DOS-Angriff handeln, aber ich vermute, dass es wahrscheinlicher ist, dass sich irgendwo ein Race Condition aufbaut. Was passiert mit Ihrem HTTP-Verkehr? Erleben Sie Aktivitätsspitzen von einigen Hosts? Liegt die Antwortzeit über oder unter der durchschnittlichen Auslastung?
Die Diagramme und Berichte, die Sie bereitgestellt haben, helfen ein wenig – aber es gibt hier nur sehr wenige Informationen, auf denen eine Diagnose basieren könnte – Sie müssen Ihre Hot Rate wirklich höchstens minutenweise und nicht stündlich gemittelt sehen. Und was ist mit diesem großen Anstieg bei 0 Stunden? Das sieht für mich seltsam aus.
Sie könnten zwar mit der Protokollierung von %D beginnen und mod-log-firstbyte installieren/konfigurieren, um zu sehen, wo das Problem auftritt, aber Sie können das alles mithilfe einer automatischen PHP-Voranstellung viel weniger invasiv erledigen. Das Folgende schreibt beispielsweise einen Protokolleintrag, wenn die Verarbeitung beginnt, und zeichnet nach Abschluss einer Anfrage zahlreiche Informationen über die geleistete Arbeit auf.
<?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));
}