首頁 後端開發 php教程 listen queue of socket fd: 3 錯誤分析

listen queue of socket fd: 3 錯誤分析

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

現在django的應用基本上都是使用uwsgi來部署,類似下面listen queue of socket "127.0.0.1:9001" (fd: 3) 的錯誤出現過2次,下面說下這兩次錯誤出現的解決的過程。

出錯場景

  • centos 6.6
  • uwsgi2.0
  • nginx1.6

錯誤錯外部發包給伺服器沒有問題,但是伺服器回傳包給外部的時候非常慢,幾乎不可用,這個時候uwsgi日誌中就出現了大量的錯誤

  • 第二次是並發量劇增之後,活動連結保持在6000左右的時候,大量出現這個錯誤。

  • 分析

  • 以這個錯誤為基礎,查詢了下相關資料,應該是系統層級參數的問題,具體可以參考linux man page listen(2).

lzz註: 簡單的理解就是每個監聽的socket,在沒有accept之前,等待處理的socket

隊列

長度,linux(至少在centos6.6中)預設是128,在我這個編譯的uwsgi中預設是100,也就是說沒有調整系統參數之前,最高也就是128。

那麼怎麼才能把隊列的長度調整變長呢?

* 必須調整系統參數,使其生效

* 必須調整uwsgi配置,然後重新啟動應用操作

修改系統參數

這裡直接修改設定檔了,重新啟動後仍然有效。

修改/etc/sysctl.conf檔,新增或修改這幾個參數值

<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>
登入後複製

修改完成之後要記得

sysctl -p

重新載入參數

uwsgi調整是不管配置,或是命令列不管配置選項,例如.ini 檔案中新增如下配置

<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>
登入後複製

之後重新啟動應用,重新載入配置。

小結

透過修改配置,這種錯誤基本上沒有出現過了,系統的吞吐量和並發數都大大提高了。所以系統特性和調優對於提升整個服務品質非常重要。

參考

somaxconn - That pesky limit.

listen(2) - Linux man page
  • 版權聲明:本文為orangleliu(http://blogo.轉載請聲明。
以上就介紹了 listen queue of socket fd: 3 錯誤分析,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1660
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1260
29
C# 教程
1233
24
PHP+Socket系列之IO多路復用及實作web伺服器 PHP+Socket系列之IO多路復用及實作web伺服器 Feb 02, 2023 pm 01:43 PM

這篇文章為大家帶來了關於php+socket的相關知識,其中主要介紹了IO多路復用,以及php+socket如何實作web伺服器?有興趣的朋友下面一起來看一下,希望對大家有幫助。

比較Flask應用部署的Gunicorn和uWSGI效能對比 比較Flask應用部署的Gunicorn和uWSGI效能對比 Jan 17, 2024 am 08:52 AM

Flask應用部署:GunicornvsuWSGI的比較引言:Flask作為一種輕量級的PythonWeb框架,受到了許多開發者的喜愛。在將Flask應用程式部署到生產環境時,選擇適合的伺服器閘道介面(ServerGatewayInterface,簡稱SGI)是至關重要的決策。 Gunicorn和uWSGI是兩種常見的SGI伺服器,本文將對它們進行詳細的

Python的socket與socketserver怎麼使用 Python的socket與socketserver怎麼使用 May 28, 2023 pm 08:10 PM

一、基於TCP協定的socket套接字程式設計1、套接字工作流程先從伺服器端說起。伺服器端先初始化Socket,然後與連接埠綁定(bind),對連接埠進行監聽(listen),呼叫accept阻塞,等待客戶端連線。在這時如果有個客戶端初始化一個Socket,然後連接伺服器(connect),如果連線成功,這時客戶端與伺服器端的連線就建立了。客戶端發送資料請求,伺服器端接收請求並處理請求,然後把回應資料傳送給客戶端,客戶端讀取數據,最後關閉連接,一次互動結束,使用以下Python程式碼實作:importso

怎麼使用Spring Boot+Vue實現Socket通知推播 怎麼使用Spring Boot+Vue實現Socket通知推播 May 27, 2023 am 08:47 AM

SpringBoot端第一步,引入依賴首先我們需要引入WebSocket所需的依賴,以及處理輸出格式的依賴com.alibabafastjson1.2.73org.springframework.bootspring-boot-starter-websocket第二步,創建WebSocket配置類importorg. springframework.context.annotation.Bean;importorg.springframework.context.annotation.Config

php socket無法連線怎麼辦 php socket無法連線怎麼辦 Nov 09, 2022 am 10:34 AM

php socket無法連線的解決方法:1、檢查php是否開啟socket擴充;2、開啟php.ini文件,檢查「php_sockets.dll」是否已載入;3、取消「php_sockets.dll」的註解狀態即可。

PHP實作Socket通訊的方法與技巧 PHP實作Socket通訊的方法與技巧 Mar 07, 2024 pm 02:06 PM

PHP是一種常用的開發語言,可以用來開發各種網頁應用程式。除了常見的HTTP請求和回應以外,PHP也支援透過Socket進行網路通信,實現更靈活和高效的資料互動。本文將介紹PHP如何實作Socket通訊的方法與技巧,並附上具體的程式碼範例。什麼是Socket通訊Socket是一種在網路中進行通訊的方法,可以在不同的電腦之間傳輸資料。透過S

C#常見的網路通訊與安全性問題及解決方法 C#常見的網路通訊與安全性問題及解決方法 Oct 09, 2023 pm 09:21 PM

C#中常見的網路通訊和安全性問題及解決方法在當今互聯網時代,網路通訊已成為了軟體開發中必不可少的一部分。在C#中,我們通常會遇到一些網路通訊的問題,例如資料傳輸的安全性、網路連線的穩定性等。本文將針對C#中常見的網路通訊和安全性問題進行詳細討論,並提供相應的解決方法和程式碼範例。一、網路通訊問題網路連線中斷:網路通訊過程中,可能會出現網路連線的中斷,這會導致

centos+nginx+uwsgi部署django專案上線的方法 centos+nginx+uwsgi部署django專案上線的方法 May 15, 2023 am 08:13 AM

我django專案叫yunwei,主要app是rabc和web,整個專案放/opt/下如下:[root@test-codeopt]#lsdjango_virtnginxredisredis-6.2.6yunwei[root@test-codeopt]#lsyunwei/manage.pyrbacstatictemplatesuwsgi @test-codeopt]#lsyunwei/uwsgi/cut_log.shloguwsgi.iniuwsgi.loguwsgi.p

See all articles