Listen-Warteschlange des Sockets fd: 3 Fehleranalyse
Heutzutage werden Django-Anwendungen grundsätzlich mit uwsgi bereitgestellt. Ein Fehler ähnlich dem folgenden
listen queue of socket "127.0.0.1:9001" (fd: 3)
ist zweimal aufgetreten. Im Folgenden wird der Prozess zur Behebung dieser beiden Fehler beschrieben.
Fehlerszenario
- Centos 6.6
- uwsgi2.0
- nginx1.6
Fehler Protokollabfang
<code><span>Tue</span><span>Jun</span><span>2</span><span>17</span>:<span>33</span>:<span>27</span><span>2015</span> - *** <span>uWSGI</span><span>listen</span><span>queue</span><span>of</span><span>socket</span><span>"127.0.0.1:9001"</span> (<span>fd</span>: <span>3</span>) <span>full</span><span>!</span><span>!</span><span>!</span> (<span>101</span>/<span>100</span>) *** <span>Tue</span><span>Jun</span><span>2</span><span>17</span>:<span>33</span>:<span>28</span><span>2015</span> - *** <span>uWSGI</span><span>listen</span><span>queue</span><span>of</span><span>socket</span><span>"127.0.0.1:9001"</span> (<span>fd</span>: <span>3</span>) <span>full</span><span>!</span><span>!</span><span>!</span> (<span>101</span>/<span>100</span>) ***</code>
Das erste Mal war, dass die Firewall im Computerraum von China Unicom falsch konfiguriert war, was die Serverausgabe einschränkte. Das heißt, es gab kein Problem mit dem Senden externer Pakete zum Server, aber der Server gab Pakete nach außen zurück. Es war sehr langsam und fast unbrauchbar. Zu diesem Zeitpunkt traten viele Fehler im uwsgi-Protokoll auf.
Das zweite Mal Dies geschah, nachdem die Parallelität stark anstieg und die Anzahl der aktiven Links bei etwa 6000 blieb. Dieser Fehler tritt in großer Zahl auf.
Analyse
Auf der Grundlage dieses Fehlers haben wir die relevanten Informationen überprüft. Es sollte ein Problem mit Parametern auf Systemebene vorliegen. Weitere Informationen finden Sie in der Linux-Manpage listen(2).
lzz Hinweis: Ein einfaches Verständnis ist, dass für jeden Listening-Socket die Länge des auf die Verarbeitung wartenden Sockets in der Warteschlange standardmäßig 128 beträgt Linux (zumindest in Centos6.6) Der Standardwert in meinem kompilierten uwsgi ist 100, was bedeutet, dass vor dem Anpassen der Systemparameter der höchste Wert 128 ist.
Wie können wir also die Länge der Warteschlange anpassen, um sie länger zu machen?
* Systemparameter müssen angepasst werden, damit sie wirksam sind
* Sie müssen die uwsgi-Konfiguration anpassen und dann die Anwendung neu starten
Vorgang
Systemparameter ändern
Die Konfigurationsdatei wird hier direkt geändert und ist nach dem Neustart weiterhin gültig .
Ändern Sie die Datei /etc/sysctl.conf und fügen Sie diese Parameterwerte hinzu oder ändern Sie sie.
<code><span>#对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了</span> net<span>.core</span><span>.somaxconn</span> = <span>262144</span> ?<span>#表示SYN<strong>队列</strong>的长度,默认为1024,加大<strong>队列</strong>长度为8192,可以容纳更多等待连接的网络连接数</span> net<span>.ipv</span>4<span>.tcp</span>_max_syn_backlog = <span>8192</span><span>#网卡设备将请求放入<strong>队列</strong>的长度</span> net<span>.core</span><span>.netdev</span>_max_backlog = <span>65536</span></code>
Nachdem die Änderung abgeschlossen ist, denken Sie daran, sysctl -p
die Parameter neu zu laden
uwsgi Passen Sie
an, ob es sich um die Konfiguration handelt, oder fügen Sie eine Option in der Befehlszeile hinzu. Fügen Sie beispielsweise die folgende Konfiguration
<code><span>listen</span>=<span>1024</span></code>
zur .ini-Datei hinzu und starten Sie dann die Anwendung und laden Sie die Konfiguration neu.
Zusammenfassung
Durch die Änderung der Konfiguration sind Fehler dieser Art fast nie aufgetreten und der Systemdurchsatz und die Parallelität wurden erheblich verbessert. Daher sind Systemeigenschaften und -optimierung sehr wichtig, um die Servicequalität insgesamt zu verbessern.
Referenz
- somaxconn – Diese lästige Grenze.
- listen(2) – Linux-Manpage
Urheberrechtserklärung : Dieser Artikel ist ein Originalartikel von orangleliu (http://blog.csdn.net/orangleliu/). Bitte geben Sie beim Nachdruck den Artikel an.
Das Obige hat die Listen-Warteschlange der Socket-FD:3-Fehleranalyse vorgestellt, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

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)

Heiße Themen

Dieser Artikel vermittelt Ihnen relevantes Wissen über PHP + Socket. Er stellt hauptsächlich das E / A-Multiplexing vor und erklärt, wie PHP + Socket den Webserver implementiert. Freunde, die interessiert sind, können einen Blick darauf werfen. Ich hoffe, es wird für alle hilfreich sein.

Flask-Anwendungsbereitstellung: Vergleich von Gunicorn und suWSGI Einführung: Flask ist als leichtes Python-Web-Framework bei vielen Entwicklern beliebt. Bei der Bereitstellung einer Flask-Anwendung in einer Produktionsumgebung ist die Auswahl der geeigneten Server Gateway Interface (SGI) eine entscheidende Entscheidung. Gunicorn und uWSGI sind zwei gängige SGI-Server. In diesem Artikel werden sie ausführlich beschrieben.

1. Socket-Programmierung basierend auf dem TCP-Protokoll 1. Der Socket-Workflow beginnt auf der Serverseite. Der Server initialisiert zuerst den Socket, bindet dann an den Port, lauscht auf den Port, ruft „Accept“ zum „Blockieren“ auf und wartet darauf, dass der Client eine Verbindung herstellt. Wenn zu diesem Zeitpunkt ein Client einen Socket initialisiert und dann eine Verbindung zum Server herstellt (verbinden), wird bei erfolgreicher Verbindung die Verbindung zwischen dem Client und dem Server hergestellt. Der Client sendet eine Datenanforderung, der Server empfängt die Anforderung und verarbeitet sie, sendet dann die Antwortdaten an den Client, der Client liest die Daten und schließt schließlich die Verbindung. Verwenden Sie den folgenden Python-Code, um sie zu implementieren : importso

Der erste Schritt auf der SpringBoot-Seite besteht darin, Abhängigkeiten einzuführen. Zuerst müssen wir die für WebSocket erforderlichen Abhängigkeiten sowie die Abhängigkeiten für die Verarbeitung des Ausgabeformats com.alibabafastjson1.2.73org.springframework.bootspring-boot-starter-websocket einführen. Der zweite Schritt besteht darin, die WebSocket-Konfigurationsklasse importorg springframework.context.annotation.Bean;importorg.springframework.context.annotation.Config zu erstellen

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

Mein Django-Projekt heißt yunwei. Die Hauptanwendungen sind rabc und web. Das gesamte Projekt wird wie folgt unter /opt/ abgelegt: [root@test-codeopt]#lsdjango_virtnginxredisredis-6.2.6yunwei[root@test-codeopt]#lsyunwei/. manage.pyrbacstatictemplatesuwsgiwebyunwei[root @test-codeopt]#lsyunwei/uwsgi/cut_log.shloguwsgi.iniuwsgi.loguwsgi.p

Lösung für das Problem, dass der PHP-Socket nicht verbunden werden kann: 1. Überprüfen Sie, ob die Socket-Erweiterung in PHP aktiviert ist. 2. Öffnen Sie die Datei php.ini und prüfen Sie, ob „php_sockets.dll“ geladen ist. 3. Kommentieren Sie „php_sockets.dll“ aus ".

PHP ist eine häufig verwendete Entwicklungssprache, mit der verschiedene Webanwendungen entwickelt werden können. Neben gängigen HTTP-Anfragen und -Antworten unterstützt PHP auch die Netzwerkkommunikation über Sockets, um eine flexiblere und effizientere Dateninteraktion zu erreichen. In diesem Artikel werden die Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP vorgestellt und spezifische Codebeispiele angehängt. Was ist Socket-Kommunikation? Socket ist eine Kommunikationsmethode in einem Netzwerk, mit der Daten zwischen verschiedenen Computern übertragen werden können. von S
