提升linux下tcp服務器並發連接數限制
http://blog.chinaunix.net/uid-24907956-id-3428052.html
1.查看Web服務器(Nginx)的並發請求數及其TCP連接狀態:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
返回結果一般如下:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597 (正常數據傳輸狀態)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (處理完畢,等待超時結束的請求數)
其他參數說明:
tcp狀態:
LISTEN:偵聽來自遠方的TCP端口的連接請求
SYN-SENT:再發送連接請求后等待匹配的連接請求
SYN-RECEIVED:再收到和發送一個連接請求后等待對方對連接請求的確認
ESTABLISHED:代表一個打開的連接
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2:從遠程TCP等待連接中斷請求
CLOSE-WAIT:等待從本地用戶發來的連接中斷請求
CLOSING:等待遠程TCP對連接中斷的確認
LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認
TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED:沒有任何連接狀態
2.查看哪些進程使用了swap分區
for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10
上面的命令會列出進程id,然后用ps aux|grep 進程id 查看具體是什么進程使用了swap分區。
4.查看Nginx運行進程數
ps -ef | grep nginx | wc -l
5.查看Web服務器進程連接數:
netstat -antp | grep 80 | grep ESTABLISHED -c
6.通過命令查看服務器上正在運行的php進程
ps aux|grep php-fpm |wc -l
7.查看已經有多少個php進程用來處理tcp請求
netstat -anopt | grep "php-fpm" | grep "ESTABLISHED" | wc -l
當前正在進行tcp網絡數據傳輸的php進程列表
netstat -anopt | grep "php-fpm" | grep "ESTABLISHED"
8.netstat命令統計服務器並發連接數
netstat -anopt | grep "ESTABLISHED" |wc -l
9.查看服務器連接列表
netstat -anopt | grep "ESTABLISHED"
netstat -anopt | grep "192.168.0.11:3306" | grep "ESTABLISHED" 查看服務器與其他服務器的正在進行傳輸數據狀態的連接列表
ss -tanp | grep "ESTAB"
10.ss命令統計服務器並發連接數
ss -o state established | wc -l
11.如何查看當前占用CPU或內存最多的幾個進程
ps aux | sort -k4nr | head -10
命令行輸入top
回車,然后按下大寫M按照memory排序,按下大寫P按照CPU排序。
*命令詳解:
1. head
:-N可以指定顯示的行數,默認顯示10行。
2. ps
:參數a指代all——所有的進程,u指代userid——執行該進程的用戶id,x指代顯示所有程序,不以終端機來區分。ps -aux的輸出格式如下:
3. sort -k4nr中(k代表從根據哪一個關鍵詞排序,后面的數字4表示按照第四列排序;n指代numberic sort,根據其數值排序;r指代reverse,這里是指反向比較結果,輸出時默認從小到大,反向后從大到小。)。本例中,可以看到%MEM在第4個位置,根據%MEM的數值進行由大到小的排序。-k3表示按照cpu占用率排序。
12.ss命令列出所有http連接中的連接
ss -o state established '( dport = :http or sport = :http )'
13.ss命令顯示Sockets摘要
ss -s
14.如何查看一個php進程的內存占用情況:
pmap $(pgrep php-fpm|head -1)
15.ps指令查看內存占用情況:
ps -A --sort -rss -o comm,pmem,pcpu|uniq -c |head -15
16.分頁查看網絡鏈接
netstat -anotp | more
netstat -anotp | grep "ESTABLISHED" | more
17.倒敘分頁查看某個log文件
tac test.log | more
18.查看系統路由表
netstat -r
19.批量跟蹤php進程
ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace
20.查看哪個進程磁盤IO資源占用較高
iotop -oP
命令的含義:只顯示有I/O行為的進程
iotop還是非常好用的,能看到哪些進程使用了swap分區
21.linux監控網絡實時帶寬:
先安裝iftop
#yum install iftop
命令:
iftop -i eth0 -n
TX:發送總流量
RX:接收總流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峰值
rates:分別表示過去2S 10S 40S的平均流量
22、查看某個端口被哪個進程監聽
netstat -anp|grep 9000
23.查看服務器網卡帶寬:
ethtool eth0
顯示:
Speed: 1000Mb/s (等於125MB/s)
1B=8bit
bps(bit per second 每秒多少個比特)
24.du-查看文件夾大小-並按大小進行排序
du -sh * | sort -nr
sudo du -ah --max-depth=1
查看根目錄下大於20M的文件列表
sudo find / -type f -size +20M -print0 | xargs -0 du -h | sort -nr
25.文件夾建立軟鏈接(用絕對地址)
ln -s 源地址(真實存在的實際地址) 目的地址(符號鏈接-快捷方式)
26.查看網卡實時流量
sar -n DEV 1 2
sar命令包含在sysstat工具包中,提供系統的眾多統計數據。其在不同的系統上命令有些差異,某些系統提供的sar支持基於網絡接口的數據統計,也可以查看設備上每秒收發包的個數和流量。
sar –n DEV 1 2
命令后面1 2 意思是:每一秒鍾取1次值,取2次。
DEV顯示網絡接口信息
另外,-n參數很有用,他有6個不同的開關:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含義如下:
- DEV顯示網絡接口信息。
- EDEV顯示關於網絡錯誤的統計數據。
- NFS統計活動的NFS客戶端的信息。
- NFSD統計NFS服務器的信息
- SOCK顯示套接字信息
- ALL顯示所有5個開關
[sre@CDVM-213017031 ~]$ sar -n DEV 1 2 Linux 2.6.32-431.el6.x86_64 (CDVM-213017031) 05/04/2017 _x86_64_ (4 CPU) 08:05:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 08:05:31 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:05:31 PM eth0 1788.00 1923.00 930.47 335.60 0.00 0.00 0.00 08:05:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 08:05:32 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:05:32 PM eth0 1387.00 1469.00 652.12 256.98 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 1587.50 1696.00 791.29 296.29 0.00 0.00 0.00
參數說明:
- IFACE:LAN接口
- rxpck/s:每秒鍾接收的數據包
- txpck/s:每秒鍾發送的數據包
- rxbyt/s:每秒鍾接收的字節數
- txbyt/s:每秒鍾發送的字節數
- rxcmp/s:每秒鍾接收的壓縮數據包
- txcmp/s:每秒鍾發送的壓縮數據包
- rxmcst/s:每秒鍾接收的多播數據包
- rxerr/s:每秒鍾接收的壞數據包
- txerr/s:每秒鍾發送的壞數據包
- coll/s:每秒沖突數
- rxdrop/s:因為緩沖充滿,每秒鍾丟棄的已接收數據包數
- txdrop/s:因為緩沖充滿,每秒鍾丟棄的已發送數據包數
- txcarr/s:發送數據包時,每秒載波錯誤數
- rxfram/s:每秒接收數據包的幀對齊錯誤數
- rxfifo/s:接收的數據包每秒FIFO過速的錯誤數
- txfifo/s:發送的數據包每秒FIFO過速的錯誤數