国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung PHP-Tutorial So beheben Sie HTTP 500: Interner Serverfehler mit PHP+Redis in tats?chlichen Projekten

So beheben Sie HTTP 500: Interner Serverfehler mit PHP+Redis in tats?chlichen Projekten

May 26, 2018 pm 03:17 PM
http

Die Anzahl der Benutzer ist schnell gewachsen und die Anzahl der Besuche hat sich in kurzer Zeit verdoppelt. Aufgrund der guten frühen Kapazit?tsplanung k?nnen die Hardwareressourcen dies unterstützen, es gibt jedoch ein gro?es Problem im Softwaresystem : 40 % der Anfragen geben HTTP 500 zurück: Interner Serverfehler

Problembeschreibung
Die Anzahl der Benutzer ist schnell gewachsen und die Anzahl der Besuche hat sich in kurzer Zeit verdoppelt Aufgrund der guten frühzeitigen Kapazit?tsplanung k?nnen die Hardware-Ressourcen dies unterstützen, aber das Software-System ergab ein gro?es Problem:
40 % der Anfragen geben HTTP 500 zurück: Interner Serverfehler
Bei Betrachtung der Protokolle Es wurde festgestellt, dass der Fehler in der Verbindungsverarbeitung von PHP <-> lag Die Grundursache wurde zu Beginn nicht gefunden, daher konnten wir nur verschiedene fehlerbezogene Methoden ausprobieren, wie zum Beispiel:
PHP-Verbindungsnummer hinzufügen und das Timeout von 500 ms auf 2,5 s erh?hendeaktivieren Sie default_socket_timeout in den PHP-EinstellungenSYN-Cookies im Hostsystem deaktivieren

überprüfen Sie die Anzahl der Dateideskriptoren in Redis und Webservern

Erh?hen Sie den Puffer des HostsystemsAnpassen Sie die Anzahl der TCP-Rückst?nde
...

Viele Methoden ausprobiert, aber alle sind wirkungslos


Beim zweiten Mal

Ich m?chte vorinstallieren. Ich habe versucht, dieses Problem in der Release-Umgebung zu reproduzieren, aber leider ist es so Immer noch fehlgeschlagen. Es sollte daran liegen, dass der Datenverkehr nicht gro? genug ist, um

Das dritte Mal

zu reproduzieren. K?nnte es sein, dass Redis im Code nicht geschlossen ist? Normalerweise schlie?t PHP die Ressourcenverbindung am Ende der Ausführung automatisch, in ?lteren Versionen kommt es jedoch zu Speicherlecks. Um auf der sicheren Seite zu sein, ?ndern Sie den Code und schlie?en Sie die Verbindung manuell. Das Ergebnis ist immer noch ungültig

Das vierte MalVerd?chtiges Ziel: PHPREDIS-Client-Bibliothek
Führen Sie A/B-Tests durch, ersetzen Sie die PREDIS-Bibliothek und stellen Sie sie für 20 % der Benutzer bereit das Rechenzentrum
Dank der guten Codestruktur wurden die Austauscharbeiten schnell abgeschlossen
Das Ergebnis ist zwar immer noch ungültig, aber es gibt auch eine gute Seite, die beweisen kann, dass phpredis in Ordnung ist

Das 5. Mal
Ich habe die Version von Redis überprüft und es war Version 2.8.9.
Versuchen Sie, Redis zu aktualisieren Aktualisieren.
Es ist in Ordnung. Das ist nicht praktisch.

Das 6. MalBeim Durchsuchen vieler Dokumente habe ich festgestellt Eine gute Debugging-Methode in den offiziellen Dokumenten: Redis Software Watchdog, ?ffnen Sie es und führen Sie Folgendes aus:


$ redis-cli --latency -p 6380 -h 1.2.3.4
min: 0, max: 463, avg: 2.03 (19443 samples)

Sehen Sie sich das Redis-Protokoll an:

...
[20398] 22 May 09:20:55.351 * 10000 changes in 60 seconds. Saving...
[20398] 22 May 09:20:55.759 * Background saving started by pid 41941
[41941] 22 May 09:22:48.197 * DB saved on disk
[20398] 22 May 09:22:49.321 * Background saving terminated with success
[20398] 22 May 09:25:23.299 * 10000 changes in 60 seconds. Saving...
[20398] 22 May 09:25:23.644 * Background saving started by pid 42027
...

Das Problem wurde gefunden:

jedes Es dauert nur ein paar Minuten, um Daten auf der Festplatte zu speichern. Warum dauert es etwa 400 ms, einen Hintergrundspeicher zu forken (Sie k?nnen es sehen). (die Zeit des ersten und zweiten Protokolls oben)

Hier habe ich endlich die Ursache des Problems gefunden. Da in der Redis-Instanz eine gro?e Datenmenge vorhanden ist, ist es sehr zeitaufw?ndig, den Hintergrund zu forken Prozess für jeden Persistenzvorgang, und die Schlüssel werden in ihrem Gesch?ft h?ufig ge?ndert, was zu h?ufigen Persistenzausl?sern führt, was h?ufig zu Problemen mit der Redis-Blockierung führt

L?sung: Verwenden Sie einen separaten Slave für die Persistenz

Dieser Slave verarbeitet keine echten Verkehrsanfragen. Seine einzige Funktion besteht darin, die Persistenz zu verwalten und Persistenzoperationen für die vorherige Redis-Instanz durchzuführen.


Der Effekt ist sehr offensichtlich und das Problem ist grunds?tzlich gel?st Manchmal werden immer noch Fehler gemeldet

Das 7. Mal

Beheben Sie die Langsamkeit, die Redis Query blockieren kann, und stellen Sie fest, dass irgendwo Schlüssel verwendet werden *

Denn es gibt mehr und Mehr Daten in Redis, dieser Befehl führt natürlich zu einer ernsthaften überlastung

Sie k?nnen ihn durch Scannen ersetzen

Das 8. Mal

Nach den vorherigen Anpassungen ist das Problem behoben wurde in den folgenden Monaten gel?st, obwohl der Datenverkehr weiter zunahm, konnte er dem widerstehen

Aber sie erkannten neue Probleme:

Die aktuelle Methode besteht darin, eine Redis-Verbindung herzustellen Wenn eine Anfrage eingeht, führen Sie einige Befehle aus und trennen Sie dann die Verbindung. Wenn das Anfragevolumen gro? ist, führt diese Methode zu erheblichen Leistungsverlusten. Mehr als die H?lfte davon werden für die Verarbeitung von Verbindungsvorg?ngen verwendet, die die Verarbeitung der Gesch?ftslogik übersteigen Redis verlangsamen

L?sung: Proxy einführen Sie haben sich für den Twemproxy von Twitter entschieden, der nur zu jedem Webserver hinzugefügt werden muss. Bei der Installation eines Proxys auf dem Computer ist Twemproxy für dauerhafte Verbindungen mit Redis-Instanzen verantwortlich, was die Reduzierung erheblich verringert Verbindungsvorg?nge.
Twemproxy verfügt au?erdem über zwei praktische Funktionen:

Unterstützt Memcached

Kann blockiert werden. Sehr zeitaufw?ndige oder gef?hrliche Befehle wie Tasten, Flushall

Der Effekt ist natürlich perfekt, und Sie müssen sich keine Sorgen mehr über frühere Verbindungsfehler machen

Das 9. Mal

durch Daten-Sharding Lassen Sie uns mit der Optimierung fortfahren:


Daten aufteilen und isolieren verschiedene Kontexte
Konsistentes Hash-Sharding für Daten im selben Kontext durchführen

Wirkung:

Reduzieren Sie die Anzahl der Anforderungen auf jeder Maschine. Die Anforderung und das Laden
verbessert die Zuverl?ssigkeit des Caches und nicht Sorgen Sie sich um einen Knotenausfall

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich sein wird.



Verwandte Empfehlungen:

PHP-Methode zum Erhalten von 6-stelligen Zufallszahlen, die in

Redis nicht vorhanden sind


PHP implementiert redisMethode zur Nachrichtenwarteschlangenver?ffentlichung Weibo

CI-Framework (CodeIgniter)-Betriebredis Schritt Analyse

Das obige ist der detaillierte Inhalt vonSo beheben Sie HTTP 500: Interner Serverfehler mit PHP+Redis in tats?chlichen Projekten. 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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

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)

Hei?e Themen

PHP-Tutorial
1502
276
Was bedeutet der http-Statuscode 520? Was bedeutet der http-Statuscode 520? Oct 13, 2023 pm 03:11 PM

Der HTTP-Statuscode 520 bedeutet, dass der Server bei der Verarbeitung der Anfrage einen unbekannten Fehler festgestellt hat und keine genaueren Informationen bereitstellen kann. Wird verwendet, um darauf hinzuweisen, dass bei der Verarbeitung der Anforderung durch den Server ein unbekannter Fehler aufgetreten ist, der durch Serverkonfigurationsprobleme, Netzwerkprobleme oder andere unbekannte Gründe verursacht werden kann. Dies wird normalerweise durch Serverkonfigurationsprobleme, Netzwerkprobleme, Serverüberlastung oder Codierungsfehler verursacht. Wenn Sie auf einen Fehler mit dem Statuscode 520 sto?en, wenden Sie sich am besten an den Website-Administrator oder das technische Support-Team, um weitere Informationen und Unterstützung zu erhalten.

So verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren So verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren Sep 26, 2023 am 11:19 AM

So implementieren Sie den automatischen Sprung von HTTP zu HTTPS mit NginxProxyManager Mit der Entwicklung des Internets beginnen immer mehr Websites, das HTTPS-Protokoll zur Verschlüsselung der Datenübertragung zu verwenden, um die Datensicherheit und den Schutz der Privatsph?re der Benutzer zu verbessern. Da das HTTPS-Protokoll die Unterstützung eines SSL-Zertifikats erfordert, ist bei der Bereitstellung des HTTPS-Protokolls eine gewisse technische Unterstützung erforderlich. Nginx ist ein leistungsstarker und h?ufig verwendeter HTTP-Server und Reverse-Proxy-Server sowie NginxProxy

Was ist der HTTP-Statuscode 403? Was ist der HTTP-Statuscode 403? Oct 07, 2023 pm 02:04 PM

Der HTTP-Statuscode 403 bedeutet, dass der Server die Anfrage des Clients abgelehnt hat. Die L?sung für den HTTP-Statuscode 403 ist: 1. überprüfen Sie die Authentifizierungsdaten. Wenn der Server eine Authentifizierung erfordert, stellen Sie sicher, dass die richtigen Anmeldedaten angegeben werden. 2. überprüfen Sie die IP-Adresseinschr?nkungen Die IP-Adresse des Clients ist eingeschr?nkt oder nicht auf der Blacklist. Wenn der Statuscode 403 mit den Berechtigungseinstellungen der Datei oder des Verzeichnisses zusammenh?ngt, stellen Sie sicher, dass der Client über ausreichende Berechtigungen zum Zugriff auf diese Dateien oder Verzeichnisse verfügt. usw.

Verstehen Sie g?ngige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Verstehen Sie g?ngige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Feb 18, 2024 pm 08:41 PM

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: H?ufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer h?her. Im Bereich Webdesign ist die Webseitenumleitung eine g?ngige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und h?ufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empf?ngt

HTTP 200 OK: Verstehen Sie die Bedeutung und den Zweck einer erfolgreichen Antwort HTTP 200 OK: Verstehen Sie die Bedeutung und den Zweck einer erfolgreichen Antwort Dec 26, 2023 am 10:25 AM

HTTP-Statuscode 200: Erkunden Sie die Bedeutung und den Zweck erfolgreicher Antworten. HTTP-Statuscodes sind numerische Codes, die den Status einer Serverantwort angeben. Darunter zeigt der Statuscode 200 an, dass die Anfrage vom Server erfolgreich verarbeitet wurde. In diesem Artikel wird die spezifische Bedeutung und Verwendung des HTTP-Statuscodes 200 untersucht. Lassen Sie uns zun?chst die Klassifizierung von HTTP-Statuscodes verstehen. Statuscodes sind in fünf Kategorien unterteilt, n?mlich 1xx, 2xx, 3xx, 4xx und 5xx. Unter diesen zeigt 2xx eine erfolgreiche Antwort an. Und 200 ist der h?ufigste Statuscode in 2xx

Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Sep 12, 2023 pm 01:15 PM

Schnelle Anwendung: Praktische Entwicklungsfallanalyse von PHP Asynchroner HTTP-Download mehrerer Dateien Mit der Entwicklung des Internets ist die Funktion zum Herunterladen von Dateien zu einem der Grundbedürfnisse vieler Websites und Anwendungen geworden. In Szenarien, in denen mehrere Dateien gleichzeitig heruntergeladen werden müssen, ist die herk?mmliche synchrone Download-Methode oft ineffizient und zeitaufw?ndig. Aus diesem Grund ist die Verwendung von PHP zum asynchronen Herunterladen mehrerer Dateien über HTTP eine zunehmend verbreitete L?sung. In diesem Artikel wird anhand eines tats?chlichen Entwicklungsfalls detailliert analysiert, wie PHP asynchrones HTTP verwendet.

Eine eingehende Untersuchung der Ursachen und L?sungen von 404-Fehlern Eine eingehende Untersuchung der Ursachen und L?sungen von 404-Fehlern Feb 25, 2024 pm 12:21 PM

Entdecken Sie die Ursachen und L?sungen des HTTP-Statuscodes 404. Einführung: Beim Surfen im Internet sto?en wir h?ufig auf den HTTP-Statuscode 404. Dieser Statuscode zeigt an, dass der Server die angeforderte Ressource nicht finden konnte. In diesem Artikel werden wir die Ursachen des HTTP-Statuscodes 404 untersuchen und einige L?sungen vorstellen. 1. Gründe für den HTTP-Statuscode 404: 1.1 Ressource ist nicht vorhanden: Der h?ufigste Grund ist, dass die angeforderte Ressource auf dem Server nicht vorhanden ist. Dies kann dadurch verursacht werden, dass die Datei versehentlich gel?scht wurde, ein falscher Name, ein falscher Pfad usw. vorliegt.

H?ufige Netzwerkkommunikations- und Sicherheitsprobleme und L?sungen in C# H?ufige Netzwerkkommunikations- und Sicherheitsprobleme und L?sungen in C# Oct 09, 2023 pm 09:21 PM

H?ufige Netzwerkkommunikations- und Sicherheitsprobleme und L?sungen in C# Im heutigen Internetzeitalter ist Netzwerkkommunikation zu einem unverzichtbaren Bestandteil der Softwareentwicklung geworden. In C# treten normalerweise einige Netzwerkkommunikationsprobleme auf, z. B. die Sicherheit der Datenübertragung, die Stabilit?t der Netzwerkverbindung usw. In diesem Artikel werden h?ufig auftretende Netzwerkkommunikations- und Sicherheitsprobleme in C# ausführlich erl?utert und entsprechende L?sungen und Codebeispiele bereitgestellt. 1. Netzwerkkommunikationsprobleme Unterbrechung der Netzwerkverbindung: W?hrend des Netzwerkkommunikationsprozesses kann die Netzwerkverbindung unterbrochen werden, was zu Problemen führen kann

See all articles