Optimieren Sie die FastCGI-Konfigurationsdatei fcgiext.ini in Windows 2003+IIS6, um die Anzahl der php-cgi.exe-Prozesse und die Größe des belegten Speichers zu reduzieren. Ich habe gehört, dass FastCGI besser ist als ISAPI, also habe ich es auf dem Server installiert. Die Konfigurationsumgebung ist Windows 2003+IIS6+FastCGI(FCGI)+PHP5.2.17. Nach längerer Beobachtung habe ich festgestellt, dass PHP, das im FastCGI-Modus arbeitet, immer mehr Speicher beansprucht. Wenn die Anzahl der Besuche etwas höher ist, gibt es N weitere PHP-CGI-Prozesse. Unter den gleichen Umständen kann es Hunderte von MB mehr beanspruchen als im ISAPI-Modus. Mein Server hat nur 2 GB Speicher und das kann ich mir nicht leisten. Ich habe online gesucht und festgestellt, dass viele Leute das gleiche Problem haben. Eine formellere Erklärung von PHP-Verantwortlichen besteht darin, dass es im PHP-CGI-Prozess keinen Speicherverlust gibt. PHP-CGI wird am Ende jeder Anforderung den gesamten vom Skript verwendeten Speicher wiederverwenden, ihn jedoch nicht an das Betriebssystem freigeben, sondern ihn weiterhin halten, um die nächste PHP-Anforderung zu bewältigen. Dies geschieht wahrscheinlich, um die Speicherfragmentierung zu verringern oder das Problem der unkontrollierbaren Zeit zu lösen, die erforderlich ist, um Speicher vom System anzufordern und ihn wieder an das Betriebssystem freizugeben. Wenn eine PHP-Anforderung jedoch gelegentlich einen großen Speichervorgang wie FTP oder Zlib verwendet, wird ein großer Block des Systemspeichers kontinuierlich von PHP-CGI belegt und kann nicht verwendet werden. In der Datei C:\WINDOWS\system32\inetsrv\fcgiext.ini können Sie die mit dem PHP-CGI-Prozess verbundenen Parameter festlegen, beispielsweise:
In der obigen Konfiguration: ExePath gibt den Pfad des FastCGI-Parsers an. Anregung
Erneut ändern Anregung
Starten Sie IIS nach der Änderung neu. instanceMaxRequests PHP_FCGI_MAX_REQUESTS Diese beiden Parameter bestimmen die maximale Anzahl von PHP-Anfragen, die ein php-cgi-Prozess nach seiner Erstellung akzeptieren kann. Die Standardkonfiguration in lighttpd ist 10000. Das heißt, dieser PHP-CGI-Prozess wird nach dem Empfang von 10.000 PHP-Anfragen beendet, gibt den gesamten Speicher frei und wird vom Verwaltungsprozess neu gestartet. Wenn Sie den Wert beispielsweise auf 100 senken, wird der Neustartzyklus von PHP-CGI erheblich verkürzt und auch die Auswirkungsdauer von Problemen, die durch gelegentliche Vorgänge mit hohem Speicherbedarf verursacht werden, wird verkürzt. Win2008-Server, Tutorial zur perfekten FastCGI-EinstellungWenn Sie FASTCGI verwenden, um PHP-CGI.EXE auf IIS7 von WIN2008 aufzurufen, gibt es standardmäßig nur 4 Prozesse. Bei Websites mit hohem Datenverkehr ist die Prozesswarteschlange aufgrund einer unzureichenden Anzahl von Prozessen sehr schwerwiegend. Die Lösung lautet wie folgt. 32-Bit-Systeme http://www.iis.net/Downloads/files/AdminPack/TP2/AdminPack_x86.msi Laden Sie das folgende Tool herunter und installieren Sie es wie unten gezeigt. Hinzufügen zu PHP_FCGI_MAX_REQUESTS = 10000 Nach dem Hinzufügen können Sie den Effekt im Prozessmanager sehen, ohne IIS neu zu starten. Der eingestellte Wert scheint zwar nicht erreicht zu sein, beim Surfen auf der Website ist die Leistungsverbesserung jedoch deutlich zu erkennen. Speichernutzung~~ Tatsächlich besteht ein Nachteil des Microsoft-Systems darin, dass der Speicherverbrauch des Servers so weit wie möglich von Diensten genutzt werden sollte, anstatt genügend Speicher für Benutzeranwendungen wie den Client übrig zu lassen. Ich möchte Sie daran erinnern, dass es sich lohnt, die folgenden beiden Parameter festzulegen: InstanceMaxRequests: Die maximale Anzahl von Anfragen, die der Fastcgi-Prozess (php-fcgi.exe) verarbeiten kann. Wenn das Limit überschritten wird, wird es recycelt. Der Standardwert ist 200 PHP_FCGI_MAX_REQUESTS: Die maximale Anzahl von Anfragen, die von PHP selbst gesteuert werden, der Standardwert ist 500 Da Sie FastCGI zum Ausführen von CGI verwenden möchten, möchten Sie auf keinen Fall, dass PHP selbst die maximale Anzahl von Anfragen begrenzt! ! Stellen Sie daher sicher, dass InstanceMaxRequests kleiner oder gleich PHP_FCGI_MAX_REQUESTS ist, sodass PHP selbst nie die Möglichkeit hat, den Prozess erneut zu starten. Sie können sehen, was Microsoft gesagt hat:
Lösung für das Problem zu vieler php-cgi.exe-Prozesse auf dem Server, die eine CPU-Auslastung von 100 % verursachenBei der Verwendung eines IIS-Servers gibt es häufig zu viele php-cgi.exe-Prozesse, wodurch die CPU zu 100 % ausgelastet ist und die Website letztendlich zu langsam läuft oder sogar einfriert. Ein Neustart von IIS ist für eine Weile kein Problem, aber nach einer Weile tritt diese Situation erneut auf. Warum passiert das und wie kann es gelöst werden? Zu Beginn habe ich das php-cgi-Programm immer manuell beendet. Obwohl dies das Problem vorübergehend lösen kann, ist es keine langfristige Lösung. Ich habe auf Baidu gesucht und festgestellt, dass dieses Problem im Allgemeinen ein Programmproblem ist, z. B. wenn das Programm Fastcgi zum Ausführen von PHP verwendet und die vom Programm festgelegten StartProcesses zu groß sind, z. B. 6 oder sogar noch größer. Nachfolgend finden Sie meine Lösung für das Problem übermäßiger php-cgi.ext, die zu Server-Cup% führen. Ich hoffe, sie hilft Ihnen weiter. Meistens passiert es beim vierten Punkt. Lösungsreferenz: 1. Überprüfen Sie den Speicherplatz des Systems. Überprüfen Sie, ob sich zu viele temporäre Dateien im System befinden. Die temporären Dateien der MySQL-Datenbank werden standardmäßig in c:/windows/temp gespeichert, was zur Ansammlung von Zehntausenden oder sogar Millionen kleiner Dateien führt und die Systemfestplatte überlastet.
Wenn der obige Befehl nicht leistungsfähig genug ist, können Sie den folgenden Code verwenden
2. PHP ist eine weit verbreitete dynamische Skriptsprache, allerdings gibt es in IIS keine integrierte Unterstützung für die PHP-Sprache. Wenn Sie PHP verwenden müssen, müssen Sie es also selbst installieren. PHP kann im CGI-Modus oder im ISAPI-Modus installiert werden. Da der ISAPI-Modus eine höhere Leistung bietet, empfehle ich Ihnen, den ISAPI-Modus zu verwenden. 3. Wenn das Programm geändert werden kann, wird empfohlen, den StartProcesses-Wert in der Programmkonfigurationsdatei auf 2 zu reduzieren, um zu sehen, ob sich die Situation dadurch verbessert. 4. Überprüfen Sie, ob ein Problem mit dem Server oder ein Angriffsphänomen vorliegt. Das könnte Sie auch interessieren:
|
>>: HTML Einführungstutorial HTML Tag Symbole schnell beherrschen
Inhaltsverzeichnis Vorwort Frühere Iterationen It...
Apache Superset ist ein leistungsstarkes BI-Tool,...
In diesem Artikel wird das Implementierungszeugni...
Die Verwendung des offiziellen MySQL-Images erfor...
Heute sprach jemand mit mir über ein Website-Entw...
Inhaltsverzeichnis Warum den Lebenszyklus versteh...
Im System werden viele Befehle verwendet. Wie kön...
Neue Funktion von IE8: Web Slices (Web Slices) Mi...
Horizontales Scrollen ist nicht in allen Situation...
MySQL ist eine häufig verwendete Open-Source-Date...
Bei der Installation der komprimierten Version vo...
In diesem Artikel wird der spezifische Code von J...
Primärschlüssel: Schlagwort: Primärschlüssel Funk...
Das Notizblockprogramm wird mithilfe der drei wic...
Ich habe viele Artikel online durchsucht, aber ke...