listen queue of socket fd: 3 錯誤分析
現在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.轉載請聲明。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

我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
