Heim Backend-Entwicklung PHP-Tutorial Listen-Warteschlange des Sockets fd: 3 Fehleranalyse

Listen-Warteschlange des Sockets fd: 3 Fehleranalyse

Jul 29, 2016 am 09:15 AM
listen socket uwsgi

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>
Nach dem Login kopieren
  • 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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.

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)

IO-Multiplexing der PHP+Socket-Serie und Implementierung eines Webservers IO-Multiplexing der PHP+Socket-Serie und Implementierung eines Webservers Feb 02, 2023 pm 01:43 PM

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.

Vergleich der Leistung von Gunicorn und uWSGI für die Bereitstellung von Flask-Anwendungen Vergleich der Leistung von Gunicorn und uWSGI für die Bereitstellung von Flask-Anwendungen Jan 17, 2024 am 08:52 AM

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.

So verwenden Sie Pythons Socket und Socketserver So verwenden Sie Pythons Socket und Socketserver May 28, 2023 pm 08:10 PM

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

So verwenden Sie Spring Boot+Vue, um den Socket-Benachrichtigungs-Push zu implementieren So verwenden Sie Spring Boot+Vue, um den Socket-Benachrichtigungs-Push zu implementieren May 27, 2023 am 08:47 AM

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# 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

So stellen Sie Centos+Nginx+Uwsgi bereit, um das Django-Projekt zu starten So stellen Sie Centos+Nginx+Uwsgi bereit, um das Django-Projekt zu starten May 15, 2023 am 08:13 AM

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

Was tun, wenn der PHP-Socket keine Verbindung herstellen kann? Was tun, wenn der PHP-Socket keine Verbindung herstellen kann? Nov 09, 2022 am 10:34 AM

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 ".

Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP Mar 07, 2024 pm 02:06 PM

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

See all articles