1、查看Web服務器(Nginx Apache)的併發請求數及其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 (處理完畢,等待超時結束的請求數)
其他參數說明:
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態/當前併發連接數
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
一般來說,tcp正常關閉需要四個包。比如a和b關閉連接,a先 給b發一個fin,b會進行確認ack,然後b也會發出fin,當a接受到這個fin,併發出最後一個ack後,就會處於time_wait狀態。這個時 間長短跟操作系統有關,一般會在1-4分鐘,也就是兩倍的數據包(2msl)最大生存時間。TCP主動關閉方採用TIME_WAIT主要是爲了實現終止
TCP全雙工連接的可靠性及允許老的重複分節在網絡中消逝,等過了2msl(大約1~4分鐘)後TIME_WAIT就會消失。
TIME_WAIT狀態的目的是爲了防止最後a發出的ack丟失,讓b處於LAST_ACK超時重發FIN
所以說,主動發起關閉連接的一方會進入time_wait狀態,這個時候,進程所佔用的端口號不能被釋放。除非在你的程序中用setsockopt設置端口可重用(SOCK_REUSE)的選項,但這不是所有操作系統都支持的
其中的TIME_WAIT狀態也成爲2MSL等待狀態。每個具體的TCP實現必須選擇一個報文段最大生存時間MSL(maximum
segment lifetime)。它是任何報文段被丟棄前在網絡內的最長時間 。我們知道這個時間是有限的,因爲TCP報文段以IP
數據報在網絡內傳輸,而IP數據報則有限制其生存時間的TTL字段。
在RFC793指出MSL爲2分鐘,然而,實現中的常用值是30秒,1分鐘或2分鐘。
對一個具體實現鎖定的MSL值,處理的原則是:當TCP執行一個主動關閉,併發回最後一個ACK,該鏈接必須在TIME_WAIT
狀態停留的時間爲2倍的MSL。這樣可以讓TCP再次發送最後的ACK以防止這個ACK丟失。(另一端超時並重發最後的FIN)。
這種2MSL等待的另一個結果是這個TCP連接在2MSL等待期間,定義這個連接的socket(客戶的IP地址和端口號,服務器
的IP地址和端口號不能被使用)。這個連接只能在2MSL結束後才能被使用。
遺憾的是,大多數TCP實現強加了更爲嚴格的限制,在2MSL等待期間,插口中使用的本地端口在默認情況下不能再被使用。
注意:
1.一個socket對在它處理2MSL等待時,將不能再被使用。儘管許多具體的實現中允許一個進程重新使用仍處於2MSL等待的
端口(通常是設置選項SO_REUSEADDR),但TCP不能允許一個新的連接建立在相同的socket對上。
2.一個端口可同時綁定在UDP和TCP服務上,但是如果一個端口要同時綁定在兩個TCP或者UDP服務上,則會出現端口已佔用
的錯誤。因爲TCP和UDP的端口在邏輯上是分離的。
2、查看Nginx運行進程數
ps -ef | grep nginx | wc -l
返回的數字就是nginx的運行進程數,如果是apache則執行
ps -ef | grep httpd | wc -l
3、查看Web服務器進程連接數:
netstat -ant | grep 80 | grep ESTABLISHED -c
netstat -na|grep ESTABLISHED|wc -l
4.當前所有80端口的請求總數
netstat -nat|grep -i "80"|wc -l
當前所有80端口的已建立連接的總數
netstat -na|grep ESTABLISHED|wc -l
4、查看MySQL進程連接數:
ps axef | grep
mysqld -c
抓瞬間導致cpu毛刺的進程,開啓top的batch模式(-b),將時間間隔調小(-d),再設置好次數(-n),將結果重定向到日誌文件中,坐等大魚上鉤。
ps aux | head -1;ps aux|grep -v PID|sort -rn -k +4 | head 前十內存佔用
端口占用
netstat -anp
指定目錄下文件大小
du -sh [filename]
指定目錄下文件大小倒序前十
du
-s
[filename] | sort -nr | head
1、
查看物理CPU的個數
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l
2、 查看邏輯CPU的個數
#cat /proc/cpuinfo |grep "processor"|wc –l
3、 查看CPU是幾核
#cat /proc/cpuinfo |grep "cores"|uniq
4、
查看CPU的主頻
#cat /proc/cpuinfo |grep MHz|uniq
5、
# uname -a
6、 Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux (查看當前操作系統內核信息) 7、 # cat /etc/issue | grep Linux
8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看當前操作系統發行版信息)
9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz (看到有8個邏輯CPU, 也知道了CPU型號)
9 # cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0 4 physical id : 1
(說明實際上是兩顆4核的CPU)
10、# getconf LONG_BIT
32
(說明當前CPU運行在32bit模式下, 但不代表CPU不支持64bit)
11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l
8(結果大於0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit)
12、如何獲得CPU的詳細信息: linux命令:cat /proc/cpuinfo
13、用命令判斷幾個物理CPU,幾個核等: 邏輯CPU個數:
# cat /proc/cpuinfo | grep "processor" | wc -l 物理CPU個數:
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
14、每個物理CPU中Core的個數:
# cat /proc/cpuinfo | grep "cpu cores" | wc -l 15、是否爲超線程?如果有兩個邏輯CPU具有相同
的”core id”,那麼超線程是打開的。每個物理CPU中邏輯CPU(可能是core, threads或both)的個數: # cat /proc/cpuinfo | grep "siblings"
1.查看CPU信息命令 cat /proc/cpuinfo
2.查看內存信息命令 cat /proc/meminfo
3.查看硬盤信息命令
fdisk -l
cat /etc/issue 系統版本
netstat -anp 顯示系統端口使用情況
lsof -i :端口 顯示佔用該端口的進程情況
uname -a 內核信息
cat /proc/interrupts 顯示中斷信息
linux禁ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
將其值改爲1後爲禁止PING
將其值改爲0後爲解除禁止PING
查找安裝位置
rpm -qa
之後根據這個名字
rpm -ql XXXXX
就找到安裝位置了.
uptime
13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00
CPU信息
cat /proc/cpuinfo
內存信息
cat /proc/meminfo
內存概況
free
監控
vmstat、vnstat、iostat、netstat、mpstat
sar
*top類: top, apachetop, mytop(mysql), mtop(mysql), iftop, iotop, htop, ntop, atop, innotop(mysql),
slabtop, redesktop(遠程桌面),
*stat類: iostat, vmstat, mpstat, vnstat, dstat, pidstat
前20個最大的文件 單位mb
du -Shm | sort -rn | head -20
進程打開文件(文件句柄)數倒序排
lsof -n|awk '{print $1"\t"$2}'|sort|uniq -c|sort -n