Apache Performance Tuning Best Practices
Verwenden Sie Event MPM für Workloads mit hoher Konsequenz, insbesondere bei PHP-FPM oder nur bei Bedarf von nicht-thread-sicheren Modulen. 2. Aktivieren Sie Keepalive mit MaxkeepaliveRequests auf 100 und Keepalivetimeout zwischen 2 und 5 Sekunden, um die Wiederverwendung von Verbindungen und die Ressourcenverwendung auszugleichen. 3. Konfigurieren Sie Ereignis -MPM -Einstellungen wie Startserver, Minsparethreads, MaxRequestworker und MaxConnectionSPerChild basierend auf dem verfügbaren RAM und dem Datenverkehr, um MaxRequestworker = Total RAM / Durchschnitts -Apache -Prozessgröße zu gewährleisten. 4. Aktivieren Sie mod_deflate, um textbasierten Inhalten wie HTML, CSS und JavaScript zu komprimieren und die Komprimierung für bereits komprimierte Dateien wie Bilder zu vermeiden. 5. Implementieren Sie das Caching mit mod_cache_disk für statische Inhalte und mod_expires für das Browser -Caching mit Ablaufregeln für Bilder, CSS und JavaScript. 6. Aktivieren Sie die SendFile und aktivieren Sie optional aktiviert, um die Leistung der Dateien durch Kernel-Ebene und Speicherzuordnung zu verbessern. 7. Stellen Sie Zeitüberschreitungen ein, limitRequestfields, limitRequestfieldSize und LimitRequestBody, um Missbrauch zu verhindern und DOS -Risiken zu verringern. 8. Deaktivieren Sie unbenutzte Module wie AutoIndex, Status und Info, um den Speicher und die CPU -Overhead zu reduzieren. 9. Verwenden Sie einen umgekehrten Proxy wie Nginx oder Lack oder konfigurieren Sie Apache mit PHP-FPM über mod_proxy_fcgi, um die statische und dynamische Inhaltsverhandlung zu trennen. 10. Die Leistung mit AB, HTOP, mod_status und Protokollen überwachen und die Änderungen an die Arbeitsbelastung, den Inhaltstyp und die Hardwarefunktionen mit Ereignis -MPM, Komprimierung, Caching und ordnungsgemäßem Worker -Tuning iteriert, die die wichtigsten Verbesserungen bereitstellen.
Die Apache -Leistungsstimmung ist für den effizienten Umgang mit hohem Verkehr, die Verringerung der Latenz und die optimale Verwendung von Serverressourcen von wesentlicher Bedeutung. Während Apache robust und flexibel ist, sind die Standardeinstellungen häufig konservativ und für Produktions -Workloads nicht optimiert. Im Folgenden finden Sie wichtige Best Practices, um die Leistung von Apache zu verbessern.

1. Wählen Sie das richtige MPM (Multi-Processing-Modul)
Das MPM bestimmt, wie Apache eingehende Anforderungen umgeht. Die Auswahl des richtigen basierend auf Ihrer Arbeitsbelastung und Hardware ist entscheidend.
- Präpark : Am besten für die Kompatibilität mit nicht-thread-sicheren Bibliotheken (z. B. älterer PHP über mod_php). Verwendet mehrere Prozesse; Jeder behandelt eine Anfrage. Hochgedächtnisgebrauch, aber stabil.
- Arbeiter : Verwendet eine Mischung aus Prozessen und Fäden. Mehr speichereffizient als Vorkörper. Gut für mäßigen Verkehr.
- Veranstaltung : Am besten für Szenarien mit hoher Konsequenz. Griffen die Keepe-Alive-Verbindungen effizient, indem Sie Fäden befreien. Empfohlen für moderne Setups mit HTTP-Keep-Alive und SSL.
Empfehlung :

- Verwenden Sie Event MPM , wenn Sie statische Inhalte bedienen oder PHP über PHP-FPM verwenden.
- Verwenden Sie nur dann Vorkörper , wenn dies von Modulen wie
mod_php
erforderlich ist.
Um MPMS zu wechseln (auf Debian/Ubuntu):
sudo a2dismod mpm_prefork sudo a2enmod mpm_event sudo systemctl starten Sie Apache2 neu
2. Optimieren Sie die Einstellungen für die Keep-Alive
Keep-Alive ermöglicht mehrere Anforderungen über eine einzelne TCP-Verbindung, wodurch der Verbindungsaufwand reduziert wird.

Schlüsselrichtlinien :
Keepalive on MaxkeepaliveRequests 100 Keepalivetimeout 5
- Keepalive on : Ermöglicht anhaltende Verbindungen.
- MaxkeepaliveRequests : maximale Anfragen pro Verbindung (100 ist angemessen).
- Keepalivetimeout : Wie lange wartet Apache auf die nächste Anforderung (unter Verwendung von weniger Speicher).
Kompromiss : Zu hohe Zeitlimit hält Leerlaufverbindungen offen und verbraucht Serverressourcen. Erwägen Sie, dass Sie bei hohen Verkehrsstellen KeepAliveTimeout
auf 2–5 Sekunden senken.
3. Tune MPM -Ereigniseinstellungen (für Event MPM)
Fein den Ereignis-MPM für Ihre Serverkapazität einstellen.
Beispielkonfiguration ( /etc/apache2/mods-available/mpm_event.conf
):
<IFMODULE MPM_EVENT_MODULE> Beginnt 3 Minsparethreads 75 Maxsparethreads 250 ThreadLimit 64 Threadsperchild 25 MaxRequestworker 400 MaxConnectionSperchild 10000 </Ifmodule>
Erläuterung :
- MaxRequestworker : Max -Anfragen (z. B. 400 = 16 Prozesse × 25 Threads jeweils).
- MaxConnectionSperchild : Begrenzte Speicherlecks durch Recyclingprozesse nach einer Reihe von Anforderungen.
Faustregel : Setzen Sie MaxRequestWorkers
basierend auf dem verfügbaren RAM:
MaxRequestworker = Gesamt -RAM / Durchschnitts -Apache -Prozessgröße
Verwenden Sie ps aux | grep apache
zur Schätzung der Prozessgröße.
4. Aktivieren Sie die Komprimierung mit mod_deflate
Reduzieren Sie die Bandbreite und verbessern Sie die Seitenladezeiten durch Komprimieren von Antworten.
Aktivieren und konfigurieren:
<Ifmodule mod_deflate.c> AddoutputFilterByType Deflate Text/Plain AddoutputFilterByType Deflate Text/HTML AddoutputFilterByType Deflate Text/XML AddoutputFilterByType Deflate Text/CSS AddoutputFilterByType Deflate Application/XML AddoutputFilterByType Deflate Application/XHTML XML AddoutputFilterByType Deflate Application/JavaScript AddoutputFilterByType Deflate Application/X-JavaScript </Ifmodule>
HINWEIS : Vermeiden Sie bereits komprimierte Dateien (z. B. Bilder, PDFs).
5. Nutzen Sie das Caching
Verwenden Sie mod_cache
, mod_cache_disk
oder mod_file_cache
, um statische Inhalte zu cache.
Basic Disk Caching Beispiel:
<Ifmodule mod_cache.c> Rückenscheibe / Cacheroot/var/cache/apache2/mod_cache CacheDefaultExpire 3600 Cachemaxexpire 86400 </Ifmodule>
Betrachten Sie für dynamische Inhalte umgekehrte Proxys wie Lack oder verwenden Sie mod_cache
mit CacheIgnoreHeaders
.
Verwenden Sie alternativ das Browser -Caching über mod_expires
:
<IfModule mod_expires.c> Läuft aktiv auf Absageytype Image/JPG "Access plus 1 Jahr" ExpiresByType Text/CSS "Access plus 1 Monat" ExpiresByType Application/JavaScript "Access plus 1 Monat" </Ifmodule>
6. optimieren
Aktivieren Sie SendFile :
Aktiviertendfile auf
Verwendet die Dateiübertragung auf Kernel-Ebene für statische Inhalte-faster und weniger cpu-intensiv.
Verwenden Sie die Speicherzuordnung (optional) :
EnableMmap on
Maps Dateien in den Speicher für einen schnelleren Zugriff (Verwendung mit Vorsicht auf Speicherbetriebssystemen).
7. Begrenzungsanforderung Overhead
Verschärfen Sie die Sicherheit und Leistung, indem Sie die Anforderungsgrößen und Auszeiten einschränken.
Zeitüberschreitung 30 LimitRequestfields 100 LimitRequestfieldSize 8190 LimitRequestBody 10485760
- Verhindert Missbrauch durch große Header oder Nutzlasten.
- Reduziert das Risiko von DOS -Angriffen.
8. Deaktivieren Sie unnötige Module
Jedes geladene Modul verbraucht Speicher und CPU.
Deaktivieren Sie unbenutzte Module:
sudo a2dismod autoIndex Status Info Ersatz
Behalten Sie nur das, was notwendig ist: rewrite
, ssl
, deflate
, headers
usw.
9. Verwenden Sie Reverse Proxy für dynamische Inhalte
Statische Inhalte in Nginx abladen oder Apache hinter einem umgekehrten Proxy wie Lack oder Nginx verwenden.
Alternativ können Sie Apache mit PHP-FPM ausführen:
- Apache behandelt statische Dateien.
- PHP-FPM verwaltet PHP-Anforderungen über
mod_proxy_fcgi
.
Dieses Setup verbessert die Parallelität und Stabilität.
10. Überwachung und Benchmark
Verwenden Sie Tools, um die Abstimmung zu validieren:
- AB (Apache Bench) :
ab -n 1000 -c 100 https://yoursite.com/
- HTOP, PS, FREE : Speicher und CPU überwachen.
- MOD_STATUS : Aktivieren Sie den Serverstatus für Echtzeit-Erkenntnisse.
Überprüfen Sie die Fehler- und Zugriffsprotokolle regelmäßig auf Engpässe.
Das Tuning von Apache ist nicht einsgröße. Beginnen Sie mit konservativen Veränderungen, überwachen Sie die Auswirkungen und iterieren. Die Veranstaltung MPM, ordnungsgemäße Arbeitergrenzen, Komprimierung und Caching liefern normalerweise die größten Gewinne. Passen Sie im Grunde genommen die Konfiguration mit Ihren Inhaltstypen, Verkehrsmustern und Hardware an.
Das obige ist der detaillierte Inhalt vonApache Performance Tuning Best Practices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

LinkedList ist eine bidirektionale verknüpfte Liste in Java, die Liste und Deque -Schnittstellen implementiert. Es ist für Szenarien geeignet, in denen häufig Elemente eingefügt und gelöscht werden. Insbesondere beim Betrieb an beiden Enden der Liste hat es eine hohe Effizienz, aber die Zufallszugriffsleistung ist schlecht und die Zeitkomplexität ist O (N). Einfügen und Löschen können O (1) an bekannten Stellen erreichen. Daher ist es geeignet, Stapel, Warteschlangen oder Situationen zu implementieren, in denen Strukturen dynamisch modifiziert werden müssen, und eignet sich nicht für readintensive Operationen, die häufig nach Index zugreifen. Die endgültige Schlussfolgerung ist, dass die LinkedList besser als ArrayList ist, wenn sie häufig geändert wird, aber weniger Zugriffe hat.

Der Kern der Verwendung des Javahttpclientapi besteht darin, einen Httpclient zu erstellen, einen httprequest zu erstellen und httPesponse zu verarbeiten. 1. Verwenden Sie httpclient.newhttpclient () oder httpclient.newbuilder (), um Zeitüberschreitungen, Proxy usw. zu konfigurieren, um Clients zu erstellen. 2. Verwenden Sie httprequest.newbuilder (), um URI, Methode, Kopfzeile und Körper zu setzen, um Anfragen zu erstellen. 3.. Senden Sie synchrone Anfragen über Client.send () oder asynchrone Anfragen über Client.sendasync (); 4. Verwenden Sie Bodyhandlers.Ofstr

Thebestjavaidein2024Dependyourneeds: 1.CHOOSEINTELLIJIDEAFORPROFESSIONAL, ENTERPRISE, Orull-StackDevelopmentDuetoitsSuperiorCodeIntelligence, Frameworkintegration, andtooling.2. Useclipseforhoxhensibilsibsibilität, LegacyPro-Eigenschaften, oderweigte, oderweigende, oderweilen, oderweilen, orwhenopenen-seourzatioten, legacyprojekts, orwhenopenen-seourzatioten, legacyprojekts, orwhenopenen-seourcatiatiox

Verwenden Sie .Equals (), um den String -Inhalt zu vergleichen, da == nur Objektreferenzen und nicht tatsächliche Zeichen vergleichen; 2. Verwenden Sie .EqualSignoreCase () beim Vergleich des Ignorierens; 3.. Verwenden Sie .Compareto () bei alphabetisch sortierender und comparetoignorecase (), wenn Sie den Fall ignorieren; 4. Vermeiden Sie es, Strings anzurufen, die möglicherweise null sein können. Equals () sollte verwendet werden, um "buchstäblich" .Eequals (Variable) oder Objekte zu verwenden. Ausgleiche (STR1, STR2), um Nullwerte sicher zu verarbeiten; Kurz gesagt, achten Sie immer eher auf den Vergleich des Inhalts als auf Referenz,

RestartyourRouterandComputertoresolvetemporaryglitches.2.RunthenetworkrouBleshooterviathesystemTraytoAutomaticFixCommonissues.3.RewhewIpadDressusesusesusesusesuSuseingCommandpromptasadMinistratorByRunningipconfig/Release, Ipconfig/Reufreset und Netshwinset und Netschon/Rufe, Netshwinset und Netshwinset und NETSHNE und NETSETH und NETSETH und NETHN

CheckSearchsets -ähnliche "MatchentirecellContents" und "Matchcase" ByexpandingOptionssinfindandReplace, sorgen für "Lookin" IssettoValuesand "Innere" toCorrectScope;

Erstens, check "clearBrowsingDataonclose" isturnedoninsettingsandTurnitofftoensurehistoryISSAVE.2.

Vorbereitungsdauerung von MajoringMavenorgradletobuildajarorwarfile, ExternalizingConfiguration
