Linux性能優化

        隨着企業網站訪問量愈來愈大,服務器的壓力也逐漸增長,主要體如今CPU使用率、內存、硬盤、網卡流量等方面資源佔用狀況很高。此時需對服務器性能進行調優,儘可能在保持服務器的現有數量,而後對其各個環節參數進行優化。node

本章向讀者介紹Linux企業級性能服務器優化、TCP/IP報文、TCP三次握手及四次斷開、Linux內核深刻優化、Linux內核故障解決方案及對Linux性能進行評估等。linux

1、TCP/IP報文詳解

TCP/IP 定義了電子設備如何連入因特網,以及數據如何在它們之間傳輸的標準。協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的協議來完成本身的需求。安全

TCP負責發現傳輸的問題,一有問題就發出信號,要求從新傳輸,直到全部數據安全正確地傳輸到目的地,而IP是給因特網的每臺聯網設備規定一個地址。TCP/IP 協議數據封裝的過程包括:用戶數據通過應用層協議封裝後傳遞給傳輸層,傳輸層封裝TCP頭部,交給網絡層,網絡層封裝IP頭部後,再交給數據鏈路層,數據鏈路層封裝Ethernet幀頭和幀尾,交給物理層,物理層以比特流的形式將數據發送到物理線路上。服務器

通常而言,不一樣的協議層對數據包有不一樣的稱謂,數據包在傳輸層叫作段(segment),在網絡層叫作數據報(datagram),在鏈路層叫作幀(frame)。數據封裝成幀後發到傳輸介質上,到達目的主機後每層協議再剝掉相應的首部,最後將應用層數據交給應用程序處理,如圖所示:cookie

優化Linux服務器,須要瞭解TCP協議相關信息,例如TCP/IP數據報文的內容及如何傳輸的,如圖所示爲IP數據包報文詳細結構圖:網絡

IP數據包詳解以下:數據結構

q  Source PortDestination Port:分別佔用16位,表示源端口號和目的端口號;用於區別主機中的不一樣進程,而IP地址是用來區分不一樣的主機的,源端口號和目的端口號配合上IP首部中的源IP地址和目的IP地址就能惟一的肯定一個TCP鏈接;併發

q  Sequence Number:用來標識從TCP發端向TCP收端發送的數據字節流,它表示在這個報文段中的的第一個數據字節在數據流中的序號;主要用來解決網絡報亂序的問題;socket

q  Acknowledgment Number:32位確認序列號包含發送確認的一端所指望收到的下一個序號,所以,確認序號應當是上次已成功收到數據字節序號加1。不過,只有當標誌位中的ACK標誌(下面介紹)爲1時該確認序列號的字段纔有效。主要用來解決不丟包的問題;tcp

q  Offset:給出首部中32 bit字的數目,須要這個值是由於任選字段的長度是可變的。這個字段佔4bit(最多能表示1532bit的的字,即4*15=60個字節的首部長度),所以TCP最多有60字節的首部。然而,沒有任選字段,正常的長度是20字節;

q  TCP Flags:TCP首部中有6個標誌比特,它們中的多個可同時被設置爲1,主要是用於操控TCP的狀態機的,依次爲URGACKPSHRSTSYNFIN。每一個標誌位的意思以下:

①             URG:此標誌表示TCP包的緊急指針域(後面立刻就要說到)有效,用來保證TCP鏈接不被中斷,而且督促中間層設備要儘快處理這些數據;

②             ACK:此標誌表示應答域有效,就是說前面所說的TCP應答號將會包含在TCP數據包中;有兩個取值:01,爲1的時候表示應答域有效,反之爲0

③             PSH:這個標誌位表示Push操做。所謂Push操做就是指在數據包到達接收端之後,當即傳送給應用程序,而不是在緩衝區中排隊;

④             RST:這個標誌表示鏈接復位請求。用來複位那些產生錯誤的鏈接,也被用來拒絕錯誤和非法的數據包;

⑤             SYN:表示同步序號,用來創建鏈接。SYN標誌位和ACK標誌位搭配使用,當鏈接請求的時候,SYN=1ACK=0;鏈接被響應的時候,SYN=1ACK=1;這個標誌的數據包常常被用來進行端口掃描。掃描者發送一個只有SYN的數據包,若是對方主機響應了一個數據包回來,就代表這臺主機存在這個端口;可是因爲這種掃描方式只是進行TCP三次握手的第一次握手,所以這種掃描的成功表示被掃描的機器不很安全,一臺安全的主機將會強制要求一個鏈接嚴格的進行TCP的三次握手;

⑥             FIN表示發送端已經達到數據末尾,也就是說雙方的數據傳送完成,沒有數據能夠傳送了,發送FIN標誌位的TCP數據包後,鏈接將被斷開。這個標誌的數據包也常常被用於進行端口掃描。

q  Window:窗口大小,也就是有名的滑動窗口,用來進行流量控制;

2、TCP三次握手及四次斷開

TCP是面向鏈接的,不管哪一方向另外一方發送數據以前,都必須先在雙方之間創建一條鏈接。在TCP/IP協議中,TCP協議提供可靠的鏈接服務,鏈接是經過三次握手進行初始化的。三次握手的目的是同步鏈接雙方的序列號和確認號並交換TCP窗口大小信息。如圖所示:

(1)TCP三次握手原理:

第一次握手:創建鏈接。客戶端發送鏈接請求報文段,將SYN位置爲1,Sequence Number爲x;而後客戶端進入SYN_SENT狀態,等待服務器的確認;
第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,須要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,本身本身還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述全部信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK報文段。而後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢之後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

如圖所示爲基於tcpdump抓取TCP/IP三次握手及數據包傳輸過程:

(2)TCP四次揮手原理

q  第一次揮手:主機A(可使客戶端,能夠是服務器端),設置Sequence NumberAcknowledgment Number,向主機B發送一個FIN報文段;此時,主機A進入FIN_WAIT_1狀態;這表示主機A沒有數據要發送給主機B

q  第二次揮手:主機B收到了主機A發送的FIN報文段,向主機A回一個ACK報文段,Acknowledgment NumberSequence Number1;主機A進入FIN_WAIT_2狀態;主機B告訴主機A,我贊成你的關閉請求;

q  第三次揮手:主機B向主機A發送FIN報文段,請求關閉鏈接,同時主機B進入LAST_ACK狀態;

q  第四次揮手:主機A收到主機B發送的FIN報文段,向主機B發送ACK報文段,而後主機A進入TIME_WAIT狀態;主機B收到主機AACK報文段之後,就關閉鏈接;此時,主機A等待2MSL後依然沒有收到回覆,則證實Server端已正常關閉,那好,主機A也能夠關閉鏈接。

 如圖所示爲基於tcpdump抓取TCP/IP四次揮手及數據包傳輸過程 :

3、優化Linux文件打開最大數

爲了防止失控的進程破壞系統的性能,Unix和Linux會跟蹤進程使用的大部分資源,並容許用戶和系統管理員使用對進程的資源限制,例如控制某個進程打開的系統文件數、對某個用戶打開系統進程數進行限制等,通常限制手段包括:軟限制和硬限制。

  • 軟限制(soft limit)是內核實際執行的限制,任何進程均可以將軟限制設置爲任意小於等於對進程限制的硬限制的值,(noproc)最大線程數和(nofile)文件數;

  • 硬限制(hard limit)是能夠在任什麼時候候任何進程中設置,但硬限制只能由超級用戶修改。

       Linux系統一切皆文件,對Linux進行各類操做,實際上是對文件進行操做,文件可分爲:普通文件、目錄文件、連接文件和設備文件。而文件描述符(file descriptor)是內核爲了高效管理已被打開的文件所建立的索引,其值一個非負整數(一般是小整數),用於指代被打開的文件,全部執行I/O操做的系統調用都經過文件描述符。

       Linux系統默認已經打開的文件描述符包括:STDIN_FILENO 0表示標準輸入、STDOUT_FILENO 1表示標準輸出、STDERR_FILENO 2表示標準錯誤輸出,默認打開一個新文件,它的文件描述符爲3。

每一個文件描述符與一個打開文件相對應,不一樣的文件描述符能夠指向同一個文件。相同的文件能夠被不一樣的進程打開,也能夠在同一個進程中被屢次打開。

Linux系統爲每一個進程維護了一個文件描述符表,該表的值都從0開始的,在不一樣的進程中你會看到相同的文件描述符,相同文件描述符有可能指向同一個文件,也有可能指向不一樣的文件。Linux內核對文件操做,維護了3個數據結構概念以下:

  • 進程級的文件描述符表;

  • 系統級的打開文件描述符表;

  • 文件系統的i-node表;

       其中進程級的描述符表的每個條目記錄了單個文件描述符的相關信息,例如控制文件描述符操做的一組標誌及對打開文件句柄的引用。Linux內核對全部打開的文件都維護了一個系統級的描述符表(open file description table)。將描述符表中的記錄行稱爲打開文件句柄(open file handle),一個打開文件句柄存儲了與一個打開文件相關的所有信息,詳細信息以下:

  • 當前文件偏移量;

  • 打開文件時所使用的狀態標識;

  • 文件訪問模式;

  • 與信號驅動相關的設置;

  • 對該文件i-node對象的引用;

  • 文件類型和訪問權限;

  • 指針,指向該文件所持有的鎖列表;

  • 文件的各類屬性。

默認Linux內核對每一個用戶設置了打開文件最大數爲1024,對於高併發網站,是遠遠不夠的,須要將默認值調整到更大,調整方法有兩種:

Linux每一個用戶打開文件最大數臨時設置方法,重啓服務器該參數無效,命令行終端執行以下命令:

ulimit   -n  65535

Linux每一個用戶打開文件最大數永久設置方法,將以下代碼加入內核限制文件/etc/security/limits.conf的末尾:

*     soft     noproc            65535
*     hard     noproc            65535
*     soft     nofile            65535
*     hard     nofile            65535

如上設置爲對每一個用戶分別設置nofile、noproc最大數,若是須要對Linux整個系統設置文件最大數限制,須要修改/proc/sys/fs/file-max中的值,該值爲Linux總文件打開數,例如設置爲:echo 3865161233 >/proc/sys/fs/file-max。

4、 內核參數的優化

Linux /proc/sys目錄下存放着多數內核的參數,而且能夠在系統運行時進行更改,通常從新啓動機器就會失效。而/etc/sysctl.conf是一個容許改變正在運行中的Linux系統的接口,它包含一些TCP/IP堆棧和虛擬內存系統的高級選項,修改內核參數永久生效。

/proc/sys下內核文件與配置文件sysctl.conf中變量存在着對應關係,即修改sysct.conf配置文件,實際上是修改/proc/sys相關參數,因此對Linux內核優化只需修改/etc/sysctl.conf文件便可。以下爲BAT企業生產環境/etc/sysct.conf內核完整參數:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65535

Linux內核常見參數詳解:

net.ipv4.tcp_timestamps = 1
該參數控制RFC 1323 時間戳與窗口縮放選項;
net.ipv4.tcp_sack = 1
選擇性應答(SACK)是 TCP 的一項可選特性,能夠提升某些網絡中全部可用帶寬的使用效率;
net.ipv4.tcp_fack = 1
打開FACK(Forward ACK) 擁塞避免和快速重傳功能;
net.ipv4.tcp_retrans_collapse = 1 
打開重傳重組包功能,爲0的時候關閉重傳重組包功能;
net.ipv4.tcp_syn_retries = 5
對於一個新建鏈接,內核要發送多少個SYN 鏈接請求才決定放棄;
net.ipv4.tcp_synack_retries = 5
tcp_synack_retries顯示或設定Linux在迴應SYN要求時嘗試多少次從新發送初始SYN,ACK封包後才決定放棄;
net.ipv4.tcp_max_orphans = 131072
系統所能處理不屬於任何進程的TCP sockets最大數量;
net.ipv4.tcp_max_tw_buckets = 5000
系統同時保持TIME_WAIT套接字的最大數量,若是超過這個數字,TIME_WAIT套接字將馬上被清除並打印警告信息;
默認爲180000,設爲較小數值此項參數能夠控制TIME_WAIT套接字的最大數量,避免服務器被大量的TIME_WAIT套接字拖死;
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 3 
若是某個TCP鏈接在空閒30秒後,內核才發起probe(探查);
若是probe 3次(每次3秒既tcp_keepalive_intvl值)不成功,內核才完全放棄,認爲該鏈接已失效;
net.ipv4.tcp_retries1 = 3
放棄迴應一個TCP 鏈接請求前﹐須要進行多少次重試;
net.ipv4.tcp_retries2 = 15
在丟棄激活(已創建通信情況)的TCP鏈接以前﹐須要進行多少次重試;
net.ipv4.tcp_fin_timeout = 30
表示若是套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2狀態的時間;
net.ipv4.tcp_tw_recycle = 1
表示開啓TCP鏈接中TIME-WAIT sockets的快速回收,默認爲0,表示關閉;
net.ipv4.tcp_max_syn_backlog = 8192
表示SYN隊列的長度,默認爲1024,加大隊列長度爲8192,能夠容納更多等待鏈接的網絡鏈接數;
net.ipv4.tcp_syncookies = 1
TCP創建鏈接的 3 次握手過程當中,當服務端收到最初的 SYN 請求時,會檢查應用程序的syn_backlog隊列是否已滿,啓用syncookie,能夠解決超高併發時的Can’t  Connect` 問題。可是會致使 TIME_WAIT 狀態fallback爲保持2MSL時間,高峯期時會致使客戶端無可複用鏈接而沒法鏈接服務器;
net.ipv4.tcp_orphan_retries = 0
關閉TCP鏈接以前重試多少次;
net.ipv4.tcp_mem = 178368  237824     356736
net.ipv4.tcp_mem[0]: 低於此值,TCP沒有內存壓力;
net.ipv4.tcp_mem[1]: 在此值下,進入內存壓力階段; 
net.ipv4.tcp_mem[2]: 高於此值,TCP拒絕分配socket;
net.ipv4.tcp_tw_reuse = 1
表示開啓重用,容許將TIME-WAIT sockets從新用於新的TCP鏈接;
net.ipv4.ip_local_port_range = 1024 65000
表示用於向外鏈接的端口範圍;
net.ipv4.ip_conntrack_max = 655360
在內核內存中netfilter能夠同時處理的「任務」(鏈接跟蹤條目);
net.ipv4.icmp_ignore_bogus_error_responses = 1
開啓惡意icmp錯誤消息保護;
net.ipv4.tcp_syncookies = 1
開啓SYN洪水攻擊保護。

5、內核報錯剖析

企業生產環境Linux服務器正常運行,因爲某種緣由會致使內核報錯或者拋出不少信息,根據系統SA能夠快速定位Linux服務器故障,Linux內核日誌通常存在messages日誌中,能夠經過命令tail -fn 100 /var/log/messages查看Linux內核日誌,以下爲Linux內核常見報錯日誌及生產環境解決報錯的方案。

一、Linux內核拋出net.ipv4.tcp_max_tw_buckets錯誤

 

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

根據TCP協議定義的3次握手及四次斷開鏈接規定,發起socket主動關閉的一方Socket將進入TIME_WAIT狀態,TIME_WAIT狀態將持續2MSL(Max Segment Lifetime)

若是該值設置太小致使,當系統Time wait數量超過默認設置的值,即會拋出如上的警告信息,須要增長net.ipv4.tcp_max_tw_buckets的值,警告信息消除。

固然也不能設置過大,對於一個處理大量短鏈接的服務器,若是是由服務器主動關閉客戶端的鏈接,將致使服務器端存在大量的處於TIME_WAIT狀態的Socket,甚至比處於Established狀態下的Socket多的多,嚴重影響服務器的處理能力,甚至耗盡可用的Socket而中止服務,TIME_WAITTCP協議用以保證被從新分配的Socket不會受到以前殘留的延遲重發報文影響的機制,是TCP傳輸必要的邏輯保證。

二、Linux內核拋出Too many open files錯誤:

Benchmarking localhost (be patient)

socket: Too many open files (24)

socket: Too many open files (24)

socket: Too many open files (24)

socket: Too many open files (24)

socket: Too many open files (24)

 

每一個文件描述符與一個打開文件相對應,不一樣的文件描述符能夠指向同一個文件。相同的文件能夠被不一樣的進程打開,也能夠在同一個進程中被屢次打開。Linux內核對應每一個用戶打開的文件最大數通常爲1024,須要將該值調高知足大併發網站的訪問。

Linux每一個用戶打開文件最大數永久設置方法,將以下代碼加入內核限制文件/etc/security/limits.conf的末尾,Exit退出終端,從新登陸即生效:

*     soft     noproc            65535
*     hard     noproc            65535
*     soft     nofile            65535
*     hard     nofile            65535

三、Linux內核拋出possible SYN flooding on port 80. Sending cookies錯誤:

May 31 14:20:14 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:21:28 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:22:44 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:25:33 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:27:06 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:28:44 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:28:51 localhost kernel: possible SYN flooding on port 80. Sending cookies.

May 31 14:31:01 localhost kernel: possible SYN flooding on port 80. Sending cookies.

此問題是因爲SYN 隊列已滿,而觸發SYN cookies,通常是因爲大量的訪問,或者惡意訪問致使,也稱之爲SYN Flooding洪水攻擊,與DDOS攻擊相似。

完整的TCP鏈接的三次握手,假設一個用戶A向服務器發送了SYN報文後忽然死機或掉線,那麼服務器在發出SYN+ACK應答報文後是沒法收到客戶端的ACK報文的(第三次握手沒法完成),這種狀況下服務器端通常會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的鏈接,這段時間的長度咱們稱爲SYN Timeout,通常來講這個時間是分鐘的數量級(大約爲30-2分鐘)。

一個用戶出現異常致使服務器的一個線程等待1分鐘並非什麼很大的問題,但若是有一個惡意的攻擊者大量模擬這種狀況,服務器端將爲了維護一個很是大的半鏈接列表而消耗很是多的資源,數以萬計的半鏈接,即便是簡單的保存並遍歷也會消耗很是多的CPU時間和內存,況且還要不斷對這個列表中的IP進行SYN+ACK的重試。

實際上若是服務器的TCP/IP棧不夠強大,最後的結果每每是堆棧溢出崩潰,即便服務器端的系統足夠強大,服務器端也將忙於處理攻擊者僞造的TCP鏈接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率很是之小),此時從正常客戶的角度看來,服務器失去響應,服務器拒絕提供服務,服務器受到了DDOS攻擊,這裏攻擊的手段爲DDOSSYN Flood攻擊(SYN洪水攻擊)。

       防禦DDOS攻擊有兩種手段,一是基於硬件專業防火牆、二是基於Linux內核簡單防禦,若是攻擊流量特別大,單純配置內核參數是沒法抵擋的,還得依靠專業級硬件防火牆,以下爲Linux內核防禦DDOS優化參數,加入以下代碼便可:

net.ipv4.tcp_fin_timeout = 30 
net.ipv4.tcp_keepalive_time = 1200 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.ip_local_port_range = 1024 65000 
net.ipv4.tcp_max_syn_backlog = 8192 
net.ipv4.tcp_max_tw_buckets = 8000 
net.ipv4.tcp_synack_retries = 2 
net.ipv4.tcp_syn_retries = 2

四、Linux內核拋出ip_conntrack: table full, dropping packet.錯誤:

May  6 11:15:07 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:19:13 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:20:34 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:23:12 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:24:07 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:24:13 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:25:11 localhost kernel: nf_conntrack:table full, dropping packet.

May  6 11:26:25 localhost kernel: nf_conntrack:table full, dropping packet.

因爲該服務器開啓了iptables防火牆,WEB服務器收到了大量的鏈接,iptables會把全部的鏈接都作連接跟蹤處理,這樣iptables就會有一個連接跟蹤表,當這個表滿的時候,就會出現上面的錯誤。ip_conntracklinux NAT的一個跟蹤鏈接條目的模塊,ip_conntrack模塊會使用一個哈希表記錄 tcp 通信協議的established connection記錄。

       若是是CentOS6.x系統,需執行:modprobe nf_conntrack命令,而後在內核優化文件中加入以下代碼,sysctl –p使其內核文件生效,便可解決該報錯:

net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 36000

若是是CentOS5.x系統,需執行:modprobe ip_conntrack命令,而後在內核優化文件中加入以下代碼,sysctl –p使其內核文件生效,便可解決該報錯:

net.ipv4.ip_conntrack_max = 655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 10800

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

Sep 23 04:45:55 localhost kernel: TCP: time wait bucket table overflow

相關文章
相關標籤/搜索