Heim Betrieb und Instandhaltung Betrieb und Wartung von Linux So lösen Sie einige häufige Probleme, die durch den Umgang mit hoher Parallelität bei der Serverwartung verursacht werden

So lösen Sie einige häufige Probleme, die durch den Umgang mit hoher Parallelität bei der Serverwartung verursacht werden

Jul 24, 2017 am 10:49 AM
导致 并发 服务器

Folgen wir hier dem Szenario, schließlich ist das Szenario der beste Weg, die Praktikabilität zu erleben. Lassen Sie uns zunächst über die Serverkonfiguration und -umgebung sprechen

Alibaba Cloud ECS Cloud-Host, 8G Speicher, 4-Kern-CPU, 20 MB Bandbreite, 20 G Systemfestplatte + 200 G Datenfestplatte, CentOS6.564 Bit, installierte integrierte LNMP-Umgebung

Szenario: WeChat sendet rote Umschläge

Dieses Szenario kommt sehr häufig vor. Im Allgemeinen senden Kunden stündlich eine Werbung vom offiziellen WeChat-Konto auf rund 5.000. Apropos, dies gilt eigentlich nicht als hohe Parallelität, aber der Server stürzte trotzdem ab und es dauerte etwa 5 Minuten, bis er wieder normal war. Das ist etwas unangemessen. Lassen Sie uns die Gründe analysieren. Die CPU-Auslastung ist nicht hoch und die Speichernutzung ist normal. Im Alibaba Cloud-Kontrollfeld ist der Netzwerkausgangsverkehr voll. Es scheint, dass das Problem durch Netzwerkgründe verursacht wird.

Zuerst habe ich die statischen Ressourcen überprüft und festgestellt, dass die meisten Bilder nicht optimiert waren, also habe ich sie entfernt und eine verlustfreie Komprimierung durchgeführt. Nach dem Absenden sind sie immer noch abgestürzt und der Server zeigte häufig 502 an.

Überprüfen Sie die statischen Ressourcen CSS und JS der Seite erneut und ersetzen Sie die häufig verwendete JS-Bibliothek durch CDN, um die Anzahl der Anfragen zu reduzieren. Nach der Übermittlung gibt es immer noch keine großen Änderungen und der 502 bleibt gleich .

Überprüfen Sie also die Anzahl der Nginx-Verbindungen und verwenden Sie den Befehl

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
Nach dem Login kopieren

Das Ergebnis zeigt

TIME_WAIT 3828SYN_SENT 1FIN_WAIT1 107FIN_WAIT2 27ESTABLISHED 661SYN_RECV 23CLOSING 15LAST_ACK 284
Nach dem Login kopieren

Guter Junge, TIME_WAITE ist sehr hoch. Sprechen Sie hier unbedingt über die Bedeutung von TIME_WAITE: TIME_WAIT: Auf der anderen Seite wurde eine Veröffentlichung initialisiert. Was bedeutet das? Dies bedeutet, dass der Server aktiv heruntergefahren wurde und auf eine Antwort vom Client wartet. Wenn der Client nicht antwortet, wartet er und dieser Wert erhöht sich. Offensichtlich müssen wir zu diesem Zeitpunkt den Wert von TIME_WAIT reduzieren.

Hier müssen Sie nur einige Parameter von sysctl.conf ändern und prüfen, ob

eine solche Einstellung ist. Checken Sie die Datei ein. Fügen Sie sie einfach am Ende hinzu. Führen Sie nach dem Speichern die Konfiguration

/sbin/sysctl -p
Nach dem Login kopieren

aus, damit sie wirksam wird.

Überprüfen Sie weiterhin die Anzahl der Nginx-Verbindungen nach 20 Minuten. Das Ergebnis ist

TIME_WAIT 87SYN_SENT 1FIN_WAIT1 60FIN_WAIT2 19ESTABLISHED 477SYN_RECV 12CLOSING 2LAST_ACK 100
Nach dem Login kopieren

und es ist wieder normal, und auch die Netzwerkbandbreite ist gesunken .

Aber die guten Zeiten hielten nicht lange an, als ich in der zweiten Stunde anfing, mir rote Umschläge zu schnappen, tauchte wieder 502 auf. Bei der Überprüfung des Prozesses wurde festgestellt, dass die CPU-Auslastung von mysqld sehr hoch war, was dazu führte, dass die CPU vollständig ausgelastet war und der Server abstürzte. Ändern Sie die MySQL-Konfigurationsdatei und passen Sie max_connection auf 30000 an. Andere damit verbundene Parameter wurden angepasst und optimiert, die Situation wurde entschärft, aber innerhalb weniger Minuten war die CPU wieder voll ausgelastet.

Seltsam! Also habe ich den Prozess in MySQL überprüft und festgestellt, dass es häufig SQL-Abfragen gab und das Datenvolumen der mehreren abgefragten Tabellen etwa 100.000 betrug. Es wurde festgestellt, dass dies daran lag, dass kein Index festgelegt war. Nach Rücksprache mit der Backend-Entwicklung stellte sich heraus, dass nur der Primärschlüssel festgelegt war. Ändern Sie es sofort. Fünf Minuten nach dem Absenden sank die CPU-Leistung und stabilisierte sich bei etwa 10 %, und 502 wurde nicht mehr angezeigt.

Das obige ist der detaillierte Inhalt vonSo lösen Sie einige häufige Probleme, die durch den Umgang mit hoher Parallelität bei der Serverwartung verursacht werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie können Parallelität und Multithreading von Java-Funktionen die Leistung verbessern? Wie können Parallelität und Multithreading von Java-Funktionen die Leistung verbessern? Apr 26, 2024 pm 04:15 PM

Parallelitäts- und Multithreading-Techniken mithilfe von Java-Funktionen können die Anwendungsleistung verbessern, einschließlich der folgenden Schritte: Parallelitäts- und Multithreading-Konzepte verstehen. Nutzen Sie die Parallelitäts- und Multithreading-Bibliotheken von Java wie ExecutorService und Callable. Üben Sie Fälle wie die Multithread-Matrixmultiplikation, um die Ausführungszeit erheblich zu verkürzen. Genießen Sie die Vorteile einer erhöhten Reaktionsgeschwindigkeit der Anwendung und einer optimierten Verarbeitungseffizienz durch Parallelität und Multithreading.

Anwendung von Parallelität und Coroutinen im Golang-API-Design Anwendung von Parallelität und Coroutinen im Golang-API-Design May 07, 2024 pm 06:51 PM

Parallelität und Coroutinen werden im GoAPI-Design für Folgendes verwendet: Hochleistungsverarbeitung: Mehrere Anfragen gleichzeitig verarbeiten, um die Leistung zu verbessern. Asynchrone Verarbeitung: Verwenden Sie Coroutinen, um Aufgaben (z. B. das Senden von E-Mails) asynchron zu verarbeiten und den Hauptthread freizugeben. Stream-Verarbeitung: Verwenden Sie Coroutinen, um Datenströme (z. B. Datenbanklesevorgänge) effizient zu verarbeiten.

Wie installiere ich die PHP-FFmpeg-Erweiterung auf dem Server? Wie installiere ich die PHP-FFmpeg-Erweiterung auf dem Server? Mar 28, 2024 pm 02:39 PM

Wie installiere ich die PHPFFmpeg-Erweiterung auf dem Server? Die Installation der PHPFFmpeg-Erweiterung auf dem Server kann uns dabei helfen, Audio- und Videodateien in PHP-Projekten zu verarbeiten und Funktionen wie Kodierung, Dekodierung, Bearbeitung und Verarbeitung von Audio- und Videodateien zu implementieren. In diesem Artikel erfahren Sie, wie Sie die PHPFFmpeg-Erweiterung auf dem Server installieren, sowie spezifische Codebeispiele. Zunächst müssen wir sicherstellen, dass PHP und FFmpeg auf dem Server installiert sind. Wenn FFmpeg nicht installiert ist, können Sie die folgenden Schritte ausführen, um FFmpe zu installieren

Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Apr 16, 2024 am 11:42 AM

Transaktionen gewährleisten die Integrität der Datenbankdaten, einschließlich Atomizität, Konsistenz, Isolation und Haltbarkeit. JDBC verwendet die Verbindungsschnittstelle, um die Transaktionssteuerung bereitzustellen (setAutoCommit, Commit, Rollback). Parallelitätskontrollmechanismen koordinieren gleichzeitige Vorgänge mithilfe von Sperren oder optimistischer/pessimistischer Parallelitätskontrolle, um eine Transaktionsisolation zu erreichen und Dateninkonsistenzen zu verhindern.

Ausgestattet mit Prozessoren der AMD EPYC 4004-Serie bringt ASUS eine Vielzahl von Server- und Workstation-Produkten auf den Markt Ausgestattet mit Prozessoren der AMD EPYC 4004-Serie bringt ASUS eine Vielzahl von Server- und Workstation-Produkten auf den Markt Jul 23, 2024 pm 09:34 PM

Laut Nachrichten dieser Website vom 23. Juli hat ASUS eine Reihe von Produkten auf Server- und Workstation-Ebene auf den Markt gebracht, die mit Prozessoren der AMD EPYC 4004-Serie ausgestattet sind. Hinweis von dieser Website: AMD hat im Mai die AM5-Plattform und die Prozessoren der EPYC 4004-Serie mit Zen4-Architektur auf den Markt gebracht, die bis zu 16-Kern-3DV-Cache-Spezifikationen bieten. ASUSProER100AB6-Server ASUSProER100AB6 ist ein 1U-Rack-Serverprodukt, das mit einem Prozessor der EPYC Xiaolong 4004-Serie ausgestattet ist und für die Anforderungen von IDC sowie kleinen und mittleren Unternehmen geeignet ist. ASUSExpertCenterProET500AB6 Workstation ASUSExpertCenterProET500AB6 ist eine

Eine Anleitung zum Unit-Testen gleichzeitiger Go-Funktionen Eine Anleitung zum Unit-Testen gleichzeitiger Go-Funktionen May 03, 2024 am 10:54 AM

Das Testen gleichzeitiger Funktionen in Einheiten ist von entscheidender Bedeutung, da dies dazu beiträgt, ihr korrektes Verhalten in einer gleichzeitigen Umgebung sicherzustellen. Beim Testen gleichzeitiger Funktionen müssen grundlegende Prinzipien wie gegenseitiger Ausschluss, Synchronisation und Isolation berücksichtigt werden. Gleichzeitige Funktionen können Unit-Tests unterzogen werden, indem Rennbedingungen simuliert, getestet und Ergebnisse überprüft werden.

Wie verwende ich atomare Klassen in der Parallelität und im Multithreading von Java-Funktionen? Wie verwende ich atomare Klassen in der Parallelität und im Multithreading von Java-Funktionen? Apr 28, 2024 pm 04:12 PM

Atomare Klassen sind threadsichere Klassen in Java, die unterbrechungsfreie Vorgänge ermöglichen und für die Gewährleistung der Datenintegrität in gleichzeitigen Umgebungen von entscheidender Bedeutung sind. Java stellt die folgenden atomaren Klassen bereit: AtomicIntegerAtomicLongAtomicReferenceAtomicBoolean Diese Klassen stellen Methoden zum Abrufen, Festlegen und Vergleichen von Werten bereit, um sicherzustellen, dass der Vorgang atomar ist und nicht durch Threads unterbrochen wird. Atomare Klassen sind nützlich, wenn Sie mit gemeinsam genutzten Daten arbeiten und Datenbeschädigungen verhindern, z. B. bei der Verwaltung gemeinsam genutzter Zähler für den gleichzeitigen Zugriff.

Golang-Prozessplanung: Optimierung der Effizienz der gleichzeitigen Ausführung Golang-Prozessplanung: Optimierung der Effizienz der gleichzeitigen Ausführung Apr 03, 2024 pm 03:03 PM

Die Go-Prozessplanung verwendet einen kooperativen Algorithmus. Zu den Optimierungsmethoden gehören: So weit wie möglich werden leichte Coroutinen verwendet, um Coroutinen sinnvoll zuzuordnen, um blockierende Vorgänge zu vermeiden und Sperren und Synchronisationsprimitive zu verwenden.

See all articles