1. 程式人生 > >[Nginx筆記]關於線上環境CLOSE_WAIT和TIME_WAIT過高

[Nginx筆記]關於線上環境CLOSE_WAIT和TIME_WAIT過高

運維的同學和Team裡面的一個同學分別遇到過Nginx在線上環境使用中會遇到TIME_WAIT過高或者CLOSE_WAIT過高的狀態

先從原因分析一下為什麼,問題就迎刃而解了。

首先是TIME_WAIT:

  理解一下TIME_WAIT狀態產生的原因,這個問題已經被很多很多的書說爛了,但是為什麼很多人還是不能解決,究其原因還是因為

大多數都是學術派,並沒有真正的遇到過這樣的問題,因為TIME_WAIT大量產生很多都發生在實際應用環境中。

TIME_WAIT產生的原因還是因為在通訊過程中服務端主動關閉造成的,在服務端傳送了最後一個FIN包後,系統會等待 Double時間

MSL(Max Segment Lifetime)用於等待接受客戶端傳送過來的FIN_ACK和FIN,這段時間服務端的對應的socket的fd是不能夠重新

利用的,這樣在大量的短連線服務中,會出現TIME_WAIT過多的現象。

解決方案:

  調整TIME_WAIT超時時間

vi /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連線,預設為0,表示關閉;


net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連線中TIME-WAIT sockets的快速回收,預設為0,表示關閉。

net.ipv4.tcp_fin_timeout = 20

其次是CLOSE_WAIT:

  CLOSE_WAIT產生的原因是客戶端主動關閉,收到FIN包,應用層卻沒有做出關閉操作引起的。

CLOSE_WAIT在Nginx上面的產生原因還是因為Nagle's演算法加Nginx本身EPOLL的ET觸發模式導致。

ET出發模式在資料就緒的時候會觸發一次回撥操作,Nagle's演算法會累積TCP包,如果最後的資料包和

FIN包被Nagle's演算法合併,會導致EPOLL的ET模式只出發一次,然而在應用層的SOCKET是讀取返回

0才代表連結關閉,而讀取這次合併的資料包時是不返回0的,然後SOCKET以後都不會觸發事件,所以

導致應用層沒有關閉SOCKET,從而產生大量的CLOSE_WAIT狀態連結。

  關閉TCP_NODELAY,在Nginx配置中加上

  tcp_nodelay        on;

相關推薦

[Nginx筆記]關於線上環境CLOSE_WAITTIME_WAIT

運維的同學和Team裡面的一個同學分別遇到過Nginx在線上環境使用中會遇到TIME_WAIT過高或者CLOSE_WAIT過高的狀態 先從原因分析一下為什麼,問題就迎刃而解了。 首先是TIME_WAIT:   理解一下TIME_WAIT狀態產生的原因,這個問題已經被很多很多的書說爛了,但是為什麼很多

關於線上環境CLOSE_WAITTIME_WAIT

轉自:http://www.cnblogs.com/Bozh/p/3752476.html 運維的同學和Team裡面的一個同學分別遇到過Nginx在線上環境使用中會遇到TIME_WAIT過高或者CLOSE_WAIT過高的狀態 先從原因分析一下為什麼,問題就迎刃而解了。 首先是TIME_WAIT:   理解

TCP的狀態,兼談Close_WaitTime_Wait的狀態 (keepalive機制)

一TCP的狀態: 1)、LISTEN:首先服務端需要開啟一個socket進行監聽,狀態為LISTEN. /* The socket is listening for incoming connections. 偵聽來自遠方TCP埠的連線請求 */ 2)、SYN_SENT:客

假設生產環境出現CPU佔用,請談談你的分析思路定位

0、top 1、檢視佔用cpu大的程序 jps -l 或者 ps -ef|grep java|grep -v grep&n

解決線上問題-定位CPU佔用

如果線上伺服器CPU佔用率過高,如何定位問題呢? 1.使用 top 命令檢視佔用CPU最高的pid 2.使用 top -H -p pid或 top -Hp pid命令檢視佔用cpu最大的執行緒id即 tid 3.使用命令 printf ‘%x/n’ tid

Filebeat占用內存CPU問題排查

ast beat 輸出 可能 follow tput 部署 cpu 一個 經反饋,新部署的服務器上filebeat占用的cpu過高,且內存只增不減。 而據我了解filebeat非常輕量級,正常情況下占用的資源幾乎都能忽略不計,所以懷疑是filebeat本身出了問題。 第

線上Java程式佔用 CPU ,請說一下排查方法?

> 我是風箏,公眾號「古時的風箏」,一個兼具深度與廣度的程式設計師鼓勵師,一個本打算寫詩卻寫起了程式碼的田園碼農! 文章會收錄在 [JavaNewBee](https://github.com/huzhicheng/JavaNewBee) 中,更有 Java 後端知識圖譜,從小白到大牛要走的路都在裡面。 這

再談應用環境下的 TIME_WAIT CLOSE_WAIT

ech 防範 生效 場景 closed 防止 減少 進入 top 轉自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解決了一個HttpClient調用錯誤導致的服務器異常,具體過程如下: http://

Nginx學習筆記04URL匹配規則實際路徑

oca 定義 wid val style 例如 top font 相同 1.1.1. URL匹配規則 匹配規則配置總結: location [=|~|~*|^~] /uri/ { } 優先級 匹配方式 描述 1最高 = 精確匹配。

nginx筆記二:nginx 安裝基本應用

支持 開發 路徑名 ip地址 led 3rd acs 必須 www lvs FWM及持久連接.note模塊類型:核心模塊:core module標準模塊:Standard HTTP modules 標準模塊Optional HTTP modules 可選模塊Mail mo

易學筆記-第2章:spring中的Bean/2.6 環境引數佔位符

第2章:spring中的Bean/2.6 環境引數和佔位符/2.6.1 環境引數/2.6.1.1 概念 概念與設定 指的是為了區分不同的環境而設定的引數,比如開發環境和生產環境   第2章:spring中的Bean/2.6 環境引數和佔

Linux環境下實現keepalive支援的LVS可用性NGINX的單主模型雙主模型可用

實驗:實現高可用的LVS-DR模型  1、準備兩臺RS伺服器 2、將兩臺lVS安裝httpd或nginx,用來做sorry server 3、定義RS伺服器 在後端伺服器RS1寫配置指令碼 執行指令碼後,ifconfig 之後指令碼傳給RS2,執行此指令碼,同樣存在l

《基於Nginx的中介軟體架構》學習筆記---1.環境配置

一、環境除錯確認 (四項確認) 1、確認系統網路 ping www.baidu.com 2、確認yum可用 yum list|grep gcc 3、確認關閉iptables規則 iptables -L // 檢視目前的防火牆規則 iptab

Bobo老師機器學習筆記第八課-如何防止擬合欠擬合?

問題一、什麼是過擬合和欠擬合? 首先擬合是一個統計學概念,它表示所求函式逼近目標函式的遠近程度。應用的機器學習中,就是我們所求的函式與未知的對映函式之間的相似度。如何求得函式引數與潛在的函式引數越逼近,說明效果越好。  假設我們用上篇部落格中的資料,原始碼可以見上文: 通

深入理解TCP(2)TCP的斷開一定是四次揮手嗎?FIN_WAIT_2CLOSE_WAITTIME_WAIT以及LAST_ACK的細節

答案是否定的 1我們回顧下使用wireshark的抓包 1.1. 伺服器未開 客戶端嘗試連線 1.2 建立連線然後關閉,斷開的時候時候有時候三次握手有時候四次握手 1.3. 建立連線,互動一次然後斷開 根據wireshark的包,四會握手的第二步

1:先補補Linux系統伺服器的基礎 打好Nginx執行的環境基礎

【學習前準備工作 強調幾點注意事項】 之前看過序章的朋友 一定還記得大米跟大家提過, 一個最最簡單的網站(靜態網站)基礎框架組成部分是什麼? 那就是 NGINX(WEB伺服器) + 伺服器 + 作業系統(Linux) 這裡給大家補充說明幾點 第一: 首先 咱們先來說一下Linux這個重頭戲的組成部分

【HTML5學習筆記一】環境搭建需要掌握的技能

初學HTML5,特此寫一些學習筆記,記錄自己的成長。 一、開發環境     1.安裝JDK(現在暫時還沒用到,估計以後會用到)。     2.配置環境變數          2.1.新建JAVA_H

CNTK與深度強化學習筆記之一: 環境搭建基本概念

如需轉載,請指明出處。 前言 深度強化學習是人工智慧當前的熱點,CNTK也是微軟力推的深度學習框架,2.x版本比之前有了長足的進步。目前國內將這兩者融合起來的文章還不多。因此寫作了這個學習筆記,希望能對大家有所幫助。 硬體,開發環境以及CNTK安裝 CN

Cesium學習筆記(一):環境配置首次執行

Cesium是國外一個基於JavaScript編寫的使用WebGL的地圖引擎。Cesium支援3D,2D,2.5D形式的地圖展示,可以自行繪製圖形,高亮區域,並提供良好的觸控支援,且支援絕大多數的瀏覽器和mobile。 這是官網上給出的例子,如果你可以成功執行

nginx學習筆記四(nginx啟動時候的masterworker程序)

nginx一般情況下都是配置成一個多程序的程式,由一個master程序和多個worker程序組成,master程序通過訊號來管理worker程序的執行狀態。下面從程式碼的角度來分析master和worker程序的啟動情形。 1.在main函式最後,會根據配置方式,決定ngi