5 Tipps, um die Leistung Ihres Apache -Webservers zu steigern
- 2827
- 905
- Susanne Stoutjesdijk
Laut einem aktuellen Bericht von NetCraft (einem bekannten Internetunternehmen, das unter anderen Diensten Webbrowser-Nutzungsstatistiken anbietet), Apache ist weiterhin der am häufigsten verwendete Webserver zwischen Websites und im Internet ausgerichteten Computern.
5 Tipps, um Ihre Apache -Webserverleistung zu steigernZusätzlich, Apache verzeichnet immer wieder das größte Wachstum unter den Top -Webservern, gefolgt von Nginx Und Iis. Wenn Sie also ein Systemadministrator sind, der für die Verwaltung von Apache -Installationen zuständig ist, müssen Sie wissen, wie Sie sicherstellen können, dass Ihr Webserver gemäß Ihren Anforderungen (oder Sie des Clients) nach besten Kapazitäten erbracht wird.
In diesem Artikel werden wir einige Tipps besprechen, mit denen Sie sicherstellen können, dass Apache reibungslos ausgeführt wird und die Anzahl der Anfragen, die Sie von Remote -Kunden erwarten, umgehen können.
Beachten Sie jedoch, dass Apache nicht mit dem Ziel entworfen wurde, Benchmark -Datensätze festzulegen. Trotzdem kann es in fast jedem Verwendungsfall, an den Sie sich möglicherweise vorstellen können, eine hohe Leistung liefern.
Tipp Nr. 1: Halten Sie Apache immer auf der neuesten Version aktualisiert
Es versteht sich von selbst, dass die neueste Version von Apache installiert ist, ist wahrscheinlich eines der ersten Dinge, die Sie berücksichtigen müssen. Ab dem 19. November 2015 die neueste Version von Apache, die in der verfügbar ist Centos 7 Repositories ist 2.4.6, wohingegen in Debian's Ist 2.4.10.
Es kann jedoch eine aktuelle Verbesserung oder eine Fehlerbehebung geben, die zu einer neu veröffentlichten stabilen Version hinzugefügt wurde, die dann zum Herunterladen und Installieren von Quelle zur Verfügung gestellt wird. Zusammenstellung und Installationsanweisungen finden Sie hier. Denken Sie auch daran, dass Sie bei der Auswahl dieser Aktualisierungsmethode Ihre aktuellen Konfigurationsdateien / -Sites / virtuellen Hosts als Vorsichtsmaßnahme sichern möchten.
In jedem Fall können Sie Ihre aktuell installierte Version wie folgt überprüfen:
# httpd -v [auf Redhat/CentOS -basierten Systemen] # Apache2 -v [über Debian/Ubuntu -basierte Systeme]Überprüfen Sie die Apache -Version
Halten Sie sich als Faustregel an die Aktualisierungsmethode, die der Paketmanager Ihrer gewählten Verteilung bereitstellt (yum update httpd
oder Aptitude Safe-Upgrade Apache2
, für CentOS oder Debian), es sei denn, es gibt keinen anderen Weg. Sie können die neuesten Versionshinweise im Abschnitt Apache -Dokumentation in der Apache HTTP Server -Projektwebsite lesen.
Tipp 2: Wenn Sie einen Kernel älter als 2 verwenden.4, erwägen Sie jetzt ein Upgrade
Warum? Kernelversionen 2.4 und oben lassen Sie den SendFile -Kernel -Systemanruf standardmäßig aktiviert. Dies erleichtert wiederum Hochleistungsnetzwerkdateitransfers (die im Kontext von Webserver-Client-Kommunikation erwünscht sind) und ermöglicht Apache, statische Inhalte schneller und mit einer niedrigeren CPU-Auslastung zu liefern, indem gleichzeitig Lese- und Sendenvorgänge durchgeführt werden.
Sie können Ihren aktuell installierten Kernel mit:
# Uname -r
und vergleichen Sie es mit dem neuesten Stallkern in www.Kernel.org (4.3 Zum Zeitpunkt dieses Schreibens).
Überprüfen Sie die Linux -KernelversionObwohl es sich um einen Prozess handelt, der nicht für Anfänger bestimmt ist, ist das Aufrüsten Ihres Kernels eine interessante Übung, um mehr über die Interna von Linux zu erfahren.
Tipp Nr. 3: Wählen Sie das Multi-Processing-Modul (MPM), das für Ihren Fall am besten geeignet ist
In der Praxis, MPMs Erweitern Sie die modulare Funktionalität von Apache, indem Sie entscheiden, wie Sie den Webserver so konfigurieren können.
Beginnend mit Version 2.4, Apache bietet drei verschiedene MPMs zur Auswahl, abhängig von Ihren Anforderungen:
- Der
Vorkörper
MPM verwendet mehrere untergeordnete Prozesse ohne Fäden. Jeder Prozess verwaltet jeweils eine Verbindung, ohne separate Threads für jeden zu erstellen. Ohne zu viele Details zu gehen, können wir sagen, dass Sie diesen MPM nur beim Debuggen einer Anwendung verwenden möchten, die verwendet oder wenn Ihre Anwendung nicht mit Thread-Safe-Modulen wie mod_Php behandelt wird. - Der
Arbeiter
MPM verwendet mehrere Threads pro Kinderprozesse, wobei jeder Faden jeweils eine Verbindung verarbeitet. Dies ist eine gute Wahl für Server mit hohem Handel, da gleichzeitigere Verbindungen mit weniger RAM behandelt werden können als im vorherigen Fall. - Endlich, das
Fall
MPM ist der Standard -MPM in den meisten Apache -Installationen für Versionen 2.4 und darüber. Es ähnelt dem Arbeiter -MPM, da es auch mehrere Themen pro Kinderprozess erzeugt, aber mit einem Vorteil: Es verursacht es Bleib am Leben oder Leerlauf Verbindungen (während sie in diesem Zustand bleiben), um von einem einzelnen Thread behandelt zu werden, wodurch der Speicher freigegeben wird, der anderen Threads zugeordnet werden kann. Dieser MPM eignet sich nicht für die Verwendung mit nicht-thread-sicheren Modulen wie mod_php, für den ein Ersatz ein solches PHP-FPM Muss stattdessen verwendet werden.
Um die zu überprüfen Mpm Sie werden von Ihrer Apache -Installation verwendet, und können Sie tun:
# httpd -v
Das Bild unten zeigt, dass dieser bestimmte Webserver die verwendet Prefork MPM.
Überprüfen Sie Apache MPMUm dies zu ändern, müssen Sie bearbeiten:
#/etc/httpd/conf.Module.D/00-mpm.conf [auf Redhat/CentOS-basierten Systemen] #/etc/apache2/mods-verfügbar.Laden [auf Debian/Ubuntu -basierte Systeme]
Wo kann sein mpm_event, mpm_worker, oder mpm_prefork.
und wenden Sie sich an die Linie, die das gewünschte Modul wie SO lädt:
LoadModule mpm_event_module module/mod_mpm_event.So
Notiz: Um die Veranstaltung MPM in Debian funktionieren zu lassen, müssen Sie möglicherweise die installieren libapache2-mod-fastcgi Paket aus den nicht freien Repositories.
Zusätzlich benötigen Sie für CentOs PHP-FPM (zusammen mit fcgi Und mod_fcgid) Während es in Debian genannt wird PHP5-FPM (zusammen mit Apache2-mpm-Event).
Last aber nicht zuletzt starten Sie den Webserver und den neu installierten Webserver neu PHP-FPM (oder PHP5-FPM) Service:
Auf Redhat/Centos
# SystemCTL Neustart HTTPD PHP-FPM && SystemCTL aktivieren HTTPD PHP-FPM
Auf Debian/Ubuntu
# SystemCTL Neustart Apache2 PHP5-FPM && SystemCTL aktivieren Apache2 PHP5-FPM
Obwohl Sie Apache für die Verwendung eines bestimmten MPM einstellen können, kann diese Konfiguration auf derselben Weise auf derselben Weise wie zuvor angegeben überschrieben werden.
Lassen Sie die entsprechenden Tags einfach in die Konfigurationsdatei für jeden virtuellen Host fallen lassen und Sie sind bereit zu gehen. Stellen Sie jedoch sicher, dass Sie ein und nur einen MPM pro VHOST verwenden.
Bitte beachten Sie schließlich, dass unabhängig von Ihrer gewählten Verteilung, PHP-FPM stützt sich auf die Implementierung von Fastcgi, Das ist der Grund, warum ich die zusätzlichen Paketinstallationen früher empfohlen habe.
Für weitere Details und Beispiele zu PHP-FPM Und wie es zusammen mit dem Ereignis MPM die Leistung von Apache erhöhen kann, sollten Sie sich auf die offizielle Dokumentation beziehen.
Dies ist das, was ich sehe, nachdem das Standard -MPM von Prefork zu Ereignis in demselben Feld geändert wurde, das im vorherigen Bild gezeigt wurde:
Wählen Sie das Apache MPM -ModulIn Centos 7, Sie müssen sicherstellen, dass die http Und https Dienste werden über die Firewall aktiviert und die Netzwerkschnittstelle (en) werden in die Standardzone ordnungsgemäß hinzugefügt.
Zum Beispiel:
# Firewall-cmd --zone = intern --add-interface = tun6to4 # Firewall-cmd --zone = intern --add-interface = Tun6to4 --permanent # Firewall-CMD--Set-Default-Zone = interne # Firewall -cmd --add-service = http # firewall-cmd --add-service = https # firewall-cmd --add-service = http --permanent # firewall-cmd --add-service = https --permanent # firewall -cmd -Reload
Der Grund, warum ich dies anspricht, ist, dass ich kürzlich ein Problem erlebt habe PHP-FPM und Apache aus der Verarbeitung von PHP -Dateien.
Als grundlegender Test (ich bin sicher, Sie können sich kompliziertere oder stressigere vorstellen) erstelle ich eine PHP -Datei, die das Vorhandensein einer anderen Datei namens überprüft prüfen.Php
Im selben Verzeichnis von zwei CentOs 7 Servern mit den gleichen Hardware -Eigenschaften und -belastung, jedoch mit unterschiedlichem MPM. Einer von ihnen wird das Ereignis verwenden und der andere wird Prefork verwenden:
Dies ist der PHP -Code, den ich in einer Datei namens gespeichert habe checkiffileexists.Php
:
Dann werden wir das Apache Benchmark -Tool (AB) mit ausführen 200 Gleichzeitige Anfragen bis 2000 Anfragen sind abgeschlossen:
# AB -K -c 100 -n 2000 localhost/checkiffileExists.Php
Führen Sie den Test durch und vergleichen die Ergebnisse. Achten Sie auf die Leistungsstatistik:
Apache -LeistungslastentestsWie Sie sehen können, ist die Leistung des Servers mit Ereignis seinem seiner Ereignis Vorkörper Gegenüber in jedem Aspekt dieses Tests.
Tipp 4: RAM mit Bedacht für Apache zuweisen
Das vielleicht kritischste Hardware -Element, das berücksichtigt werden muss RAM für jeden Apache -Prozess zugewiesen. Obwohl Sie dies nicht direkt kontrollieren können, können Sie die Anzahl der Kinderprozesse durch die einschränken MaxRequestworker Richtlinie (früher bekannt als Maxclients in Apache 2.2), die die RAM -Verwendung durch Apache Grenzen setzen wird. Auch hier können Sie diesen Wert auf einem Host oder einer virtuellen Hostbasis festlegen.
Dazu sollten Sie die durchschnittliche Menge an RAM zur Kenntnis nehmen, die von Apache verwendet wird, und dann mit der Anzahl der Anzahl multiplizieren MaxRequestworker, Und das ist die Menge an Speicher, die für Apache -Prozesse zugewiesen wird. Eine Sache, die Ihr Webserver nie tun soll, ist die Verwendung von Swap, da dies seine Leistung erheblich verringert. Daher sollten Sie immer die Verwendung von RAM durch Apache innerhalb der Grenzen halten, die Sie sich leisten können und sich niemals auf den Swap dafür verlassen.
Beispielsweise beschränkt der folgende Block die Anzahl der gleichzeitigen Kunden auf 30. Wenn mehr Kunden auf den Gastgeber kommen, können sie eine Verzögerung oder einen vorübergehenden Fehler erleben, der leicht gelöst werden kann, indem der Browser erfrischt wird. Dies kann zwar als unerwünscht angesehen werden, ist jedoch für den Server gesünder und auf lange Sicht auch am besten für Ihre Website.
Sie können diesen Block innen platzieren /etc/httpd/conf/httpd.Conf
oder /etc/apache2/apache2.Conf
, je nachdem, ob Sie CentOS oder Debian verwenden.
Bitte beachten Sie, dass das gleiche Prinzip für alle gilt MPMs - Ich benutze Event hier, um das im vorherige Tipp beschriebene Konzept fortzusetzen:
Startserver 3 minsparethreads 25 Maxsparethreads 75 ThreadLimit 64 Threadsperchild 25 MaxRequestworker 30 MaxConnectionSperchild 1000
In jedem Fall wird dringend empfohlen, sich auf den Apache 2 zu beziehen.4 Dokumente, um zu sehen, welche Richtlinien für den gewählten MPM zulässig sind.
Tipp Nr. 5: Kennen Sie Ihre Anwendungen
Als Faustregel sollten Sie keine Apache -Module laden, die nicht ausschließlich benötigt werden, damit Ihre Bewerbung funktioniert. Dies erfordert mindestens ein Gesamtwissen über die auf Ihrem Server ausgeführten Anwendungen, insbesondere wenn Sie ein Systemadministrator sind und ein weiteres Team für die Entwicklung zuständig ist.
Sie können die aktuell geladenen Module auflisten mit:
# httpd -m [auf Redhat/CentOS -basierten Systemen] # Apache2ctl -m [auf Debian/Ubuntu -basierte Systeme]
Module entladen / deaktivieren in Centos, Sie müssen die Zeile, die mit beginnt LoadModule (Entweder in der Hauptkonfigurationsdatei oder in einem Auxiliary Inside /etc/httpd/conf.Module.D.
Andererseits, Debian Bietet ein Tool namens namens a2dismod Module deaktivieren und wie folgt verwendet werden:
# a2dismod module_name
Um es zurück zu aktivieren:
# a2enmod module_name
Denken Sie in beiden Fällen daran, Apache neu zu starten, damit die Änderungen wirksam werden können.
Zusammenfassung
In diesem Artikel haben wir überprüft 5 Tipps Dies hilft Ihnen dabei, den Apache -Webserver zu stimmen und seine Leistung zu erhöhen. Darüber hinaus sollten Sie sich daran erinnern, dass Optimierung und Leistung ohne Sicherheit sinnlos ist. Sie können sich daher auf den Installation MOD_PAGESPEED verweisen, um die Leistung von Webserver -Leistung und Apache -Härtungstipps in Tecmint zu verbessern.Com auch.
Da wir in diesem Artikel nicht alle Aspekte dieses Themas angemessen abdecken können, werden Sie vielleicht an andere Ideen denken, die Sie mit dem Rest der Community teilen möchten. Wenn ja, können Sie uns gerne mit dem folgenden Kommentarformular wissen.
- « Einrichten von OpenerP (ODOO) 9 mit Nginx auf Rhel/Centos und Debian/Ubuntu
- 25 Nützliche iptierbare Firewall -Regeln, die jeder Linux -Administrator wissen sollte »