提高linux下tcp服務器併發鏈接數限制
http://blog.chinaunix.net/uid-24907956-id-3428052.htmlphp
1.查看Web服務器(Nginx)的併發請求數及其TCP鏈接狀態:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'html
返回結果通常以下:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597 (正常數據傳輸狀態)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (處理完畢,等待超時結束的請求數)linux
其餘參數說明:nginx
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:沒有任何鏈接狀態bash
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 -ltcp
5.查看Web服務器進程鏈接數:
netstat -antp | grep 80 | grep ESTABLISHED -cphp-fpm
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的平均流量
2二、查看某個端口被哪一個進程監聽
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 ,其表明的含義以下:
[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
參數說明: