監控io性能
iostat -x 磁盤使用
iostat 在安裝sysstat的時候會自動安裝上這個命令。它和sar是同一個包
[root@localhost ~]# yum install -y sysstat
[root@localhost ~]# iostat
Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.19 0.00 1.98 0.33 0.00 96.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 1.65 10.21 0.00 1840 0
sda 31.35 1110.33 414.35 200192 74707
scd0 0.06 0.24 0.00 44 0
dm-0 0.33 2.53 0.00 456 0
iostat和sar命令差不多,後面接數字
iostat 1,1秒顯示一次;sda bk_read/s kb_wrtn/s 讀寫速度
[root@localhost ~]# iostat 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.57 0.00 0.98 0.16 0.00 98.29
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.80 4.94 0.00 1840 0
sda 15.23 537.50 200.94 200192 74839
scd0 0.03 0.12 0.00 44 0
dm-0 0.16 1.22 0.00 456 0
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.00 0.00 0.00 0 0
sda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.00 0.00 0.00 0 0
sda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
^C
用sar -b 也可以查看速度些速度
- iostat -x 1 這裏最重要的是%util;這列表示你的IO等待,磁盤使用有多少時間佔用cpu,cpu有部分時間給進程經銷計算,也有一部分時間等待io的,等待磁盤讀和寫,這個時間比是多少,佔比是多大呢,這個就是%util。如果這個數字很大,50%60%那你的IO太差,他非常的忙,數字很大,讀和寫也很大,如果讀和寫兩列不大,但是util這列很大,說明你的硬盤存在問題和故障。如果你的硬盤很慢,肯定會影響你的性能,及時你的CPU很快在厲害,,硬盤更不上也會存在很大的瓶頸的。記住iostat -x 關注%util這一列。
[root@localhost ~]# iostat -x 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.44 0.08 0.00 99.23
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 0.33 0.00 2.03 0.00 12.35 0.00 0.06 0.06 0.00 0.05 0.00
sda 0.01 0.29 5.22 1.21 226.67 83.51 96.48 0.05 7.59 2.14 31.06 0.95 0.61
scd0 0.00 0.00 0.01 0.00 0.05 0.00 8.00 0.00 1.27 1.27 0.00 1.27 0.00
dm-0 0.00 0.00 0.07 0.00 0.50 0.00 15.20 0.00 0.02 0.02 0.00 0.02 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.00 0.00 0.00 1.98 0.00 1.49 1.50 0.00 0.50 0.00 0.50 0.50 0.10
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
iotop 磁盤使用
如果發現磁盤io很忙,到底是那個進程在讀寫呢,我們用iotop來查看。
[root@localhost ~]# yum install -y iotop
[root@linux-128 ~]#iotop
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-r~tem --deserialize 21
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]
12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
16 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2]
17 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2]
18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/2]
531 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % auditd -n
20 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/2:0H]
21 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/3]
22 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/3]
23 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/3]
25 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:0H]
27 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper]
28 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs]
29 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]
30 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]
free命令
- free 查看內存使用情況
- free -m / -g / -h
- buffer/cache區別
- 公式:total=used+free+buff/cache
- avaliable包含free和buffer/cache剩餘
free 單位KB
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1875748 115996 1453008 8748 306744 1583468
Swap: 4194300 0 4194300
free -m 單位M
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1831 113 1418 8 299 1546
Swap: 4095 0 4095
free -h 單位G
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 113M 1.4G 8.5M 299M 1.5G
Swap: 4.0G 0B 4.0G
total 是整個內存大小 total=used+free+buff/cache
used 使用了多少內存
free 剩餘多少內存 正在剩餘的內存是第二行的free
available 正則可用的內存 available=free+剩餘buff/cache
- cache:磁盤速度是比較慢的,cpu比較快,兩者速度相差比較大,爲了緩解這個局面,工程師就想到了緩存這個思路,緩存是介於cpu和磁盤之間的一種介子,他的速度比cpu慢一點,比磁盤速度快一點,當我們從磁盤裏取數據的時候速度很慢,就可以事先把數據取出來放到內存裏(cache)當cpu用到的時候就從內存裏去取,這個速度就比原來直接從磁盤裏取拿數據速度要快很多,這裏內存裏存放這部分數據的空間就要cache
- buffe正好相反,cpu把數據處理完後,形成一個結果(也是數據)要寫入到磁盤裏去的時候,這個速度也很慢的,我們同樣的速度也是先把它寫到內存裏,內存再逐漸慢慢地在後臺一點點寫入磁盤裏,這一部分空間就叫中buffer(緩衝)
- buffer 是即將寫入到磁盤裏去的數據暫存的內存區域
- cached是從磁盤裏讀出來的數據暫存的內存區域。 linux內核會先分配一部分buffer,cacha出來留着備用,這部分空間不可能直接用完,可能會有一部分剩餘,那麼這部分剩餘實際上對內存來說是可用的,可回收的。
內存正真剩餘=物理內存+buffer+cache
free列第一行的數字爲0表示內存已經分配完,但並不表示內存就耗盡了。 因爲可能還有分配的cached並沒有用完。
物理內存、buffer和cached三個沒有再可分配的容量那就意味着所有的物理內存都耗盡了,
真正的內存用完了導致頻繁使用swap 程序運行速度會超級慢
ps 查看系統當中所有的進程
- top -bn1 也可以顯示所有的進程
[root@localhost ~]# top -bn1
top - 10:46:12 up 24 min, 1 user, load average: 0.00, 0.02, 0.05
Tasks: 108 total, 2 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1875748 total, 1452588 free, 116272 used, 306888 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1583128 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2264 root 20 0 157584 2040 1492 R 5.9 0.1 0:00.03 top
1 root 20 0 125300 3760 2400 S 0.0 0.2 0:01.82 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.19 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:01.59 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.13 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.18 ksoftirqd/1
16 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/2
17 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/2
。。。
- ps aux 一盤工作中使用這個命令
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.2 125300 3760 ? Ss 10:21 0:01 /usr/lib/systemd/systemd --switched-
root 2 0.0 0.0 0 0 ? S 10:21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:21 0:00 [ksoftirqd/0]
。。。。
root 2142 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/3:1H]
root 2143 0.0 0.1 116016 2664 pts/0 Ss 10:22 0:00 -bash
root 2217 0.0 0.0 0 0 ? S< 10:24 0:00 [kworker/1:2H]
root 2232 0.0 0.0 0 0 ? S< 10:34 0:00 [kworker/3:2H]
root 2246 0.0 0.0 0 0 ? S 10:37 0:00 [kworker/0:0]
root 2263 0.0 0.0 0 0 ? S 10:42 0:00 [kworker/0:2]
root 2285 0.0 0.0 151068 1820 pts/0 R+ 10:47 0:00 ps aux
- ps -elf 這兩者顯示的內容是相識的
USER 用戶
PID 進程標誌數,/proc文件裏面有跟pid相同名字的目錄;進程的id,這個id很有用,在linux中內核管理進程就得靠pid來識別和管理某一個程,比如我想終止某一個進程,則用 ‘kill 進程的pid 有時並不能殺掉,則需要加一個-9選項了 kill -9 進程pid
某個進程有問題,我想知道它是那個目錄下的?(pid都在proc這個目錄下,每一個pid就是一個目錄)
ls /proc/進程ID/ %cpu 佔用cpu百分比
%mem 佔用內存百分比
VSZ 虛擬內存大小
RSS 真正內存大小
TTY 從哪裏啓動,pts/0 當前終端STAT 進程的狀態 S 表示休眠sleep
s 主進程,父進程
< 高優先級,優先得到cpu的資源
N 低優先級
- 前臺運行進程
S<s 高優先級的主進程,休眠狀態
R runing,正在運行的進程(某個時間段使用到cpu資源的進程)
L 被鎖的進程
l 多線程的進程
Z殭屍進程
x 已經死掉的進程
T 暫停的進程ctrl+z
D 不能被終端的進程,比如IO,很少見。
START 進程啓動時間
TIME 佔用cpu多長時間
COMMAND 進程名稱
[root@localhost ~]# ps aux |grep -c kworker
21
[root@localhost ~]# ps aux |grep kworker
root 5 0.0 0.0 0 0 ? S< 10:21 0:00 [kworker/0:0H]
root 20 0.0 0.0 0 0 ? S< 10:21 0:00 [kworker/2:0H]
root 36 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/2:1]
root 37 0.0 0.0 0 0 ? S 10:22 0:01 [kworker/3:1]
root 55 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/u128:1]
root 57 0.1 0.0 0 0 ? S 10:22 0:02 [kworker/0:1]
root 61 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/1:1]
root 256 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/u128:2]
root 290 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/1:2]
root 294 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/2:3]
root 295 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/3:2]
root 452 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/0:1H]
root 736 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/1:1H]
root 2075 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/2:1H]
root 2142 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/3:1H]
root 2217 0.0 0.0 0 0 ? S< 10:24 0:00 [kworker/1:2H]
root 2232 0.0 0.0 0 0 ? S< 10:34 0:00 [kworker/3:2H]
root 2263 0.0 0.0 0 0 ? S 10:42 0:00 [kworker/0:2]
root 2286 0.0 0.0 0 0 ? S< 10:48 0:00 [kworker/3:0H]
root 2307 0.0 0.0 0 0 ? S 10:52 0:00 [kworker/0:0]
監控系統狀態
- netstat 查看網絡狀態
- netstat -lnp 查看監聽端口
- netstat -an 查看系統的網絡連接狀況
- netstat -lntp 只看出tcp的,不包含socket
- ss -an 和nestat異曲同工 分享一個小技巧:
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
netstat 命令是用來查看網絡連接狀態,系統所有開放端口,路由表等信息
- netstat -lnp 用來監聽有哪些接口
[root@localhost ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 947/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1216/master
tcp6 0 0 :::22 :::* LISTEN 947/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1216/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 553/chronyd
udp6 0 0 ::1:323 :::* 553/chronyd
raw6 0 0 :::58 :::* 7 587/NetworkManager
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 18635 1216/master public/cleanup
unix 2 [ ACC ] STREAM LISTENING 18638 1216/master public/qmgr
unix 2 [ ACC ] STREAM LISTENING 18661 1216/master public/flush
unix 2 [ ACC ] STREAM LISTENING 18676 1216/master public/showq
unix 2 [ ACC ] STREAM LISTENING 10897 1/systemd /run/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 10926 1/systemd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 9134 1/systemd /run/systemd/journal/stdout
unix 2 [ ACC ] STREAM LISTENING 18642 1216/master private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 18700 1216/master private/scache
unix 2 [ ACC ] STREAM LISTENING 10949 1/systemd /run/lvm/lvmetad.socket
unix 2 [ ACC ] STREAM LISTENING 10952 1/systemd /run/lvm/lvmpolld.socket
unix 2 [ ACC ] STREAM LISTENING 18631 1216/master public/pickup
unix 2 [ ACC ] STREAM LISTENING 18652 1216/master private/defer
unix 2 [ ACC ] STREAM LISTENING 13291 1/systemd /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 18655 1216/master private/trace
unix 2 [ ACC ] STREAM LISTENING 18658 1216/master private/verify
unix 2 [ ACC ] STREAM LISTENING 18664 1216/master private/proxymap
unix 2 [ ACC ] STREAM LISTENING 18667 1216/master private/proxywrite
unix 2 [ ACC ] STREAM LISTENING 18670 1216/master private/smtp
unix 2 [ ACC ] STREAM LISTENING 18673 1216/master private/relay
unix 2 [ ACC ] STREAM LISTENING 18679 1216/master private/error
unix 2 [ ACC ] STREAM LISTENING 18682 1216/master private/retry
unix 2 [ ACC ] STREAM LISTENING 18685 1216/master private/discard
unix 2 [ ACC ] STREAM LISTENING 18688 1216/master private/local
unix 2 [ ACC ] STREAM LISTENING 18691 1216/master private/virtual
unix 2 [ ACC ] STREAM LISTENING 18694 1216/master private/lmtp
unix 2 [ ACC ] STREAM LISTENING 18645 1216/master private/rewrite
unix 2 [ ACC ] STREAM LISTENING 18649 1216/master private/bounce
unix 2 [ ACC ] STREAM LISTENING 18697 1216/master private/anvil
查看監聽的接口後,服務端到底跟哪些客戶端進行通信,以及客戶端跟我們服務端通信過程到底十一個什麼樣的狀態?
是連接進行數據傳輸還是兩者剛剛建立連接,還是通信完成後保持一個連接而正在等待:要用netstat -an 來查看
netstat -an
- 查看服務端和客戶端之間的狀態
- 用這個值去衡量服務器有沒有壓力,有沒有併發,併發是多少
- netstat -an |grep 122.122.69.86:80|grep -ic estab -i是忽略大小寫 -c符合要求的行數
這臺服務器的併發數是884.意思是在這一秒或者這一個時刻內有884個連接。
netstat -lntp
netstat -lnp 查看監聽的端口
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 947/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1216/master
tcp6 0 0 :::22 :::* LISTEN 947/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1216/master
netstat -an tcp IP
[root@localhost ~]# netstat -an tcp IP
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.88.128:22 192.168.88.1:54651 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
raw6 0 0 :::58 :::* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 18635 public/cleanup
unix 2 [ ACC ] STREAM LISTENING 18638 public/qmgr
unix 2 [ ACC ] STREAM LISTENING 18661 public/flush
unix 2 [ ACC ] STREAM LISTENING 18676 public/showq
unix 2 [ ACC ] STREAM LISTENING 10897 /run/systemd/private
unix 2 [ ] DGRAM 9115 /run/systemd/notify
unix 2 [ ] DGRAM 9117 /run/systemd/cgroups-agent
unix 2 [ ACC ] SEQPACKET LISTENING 10926 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 9134 /run/systemd/journal/stdout
unix 5 [ ] DGRAM 9137 /run/systemd/journal/socket
unix 13 [ ] DGRAM 9139 /dev/log
unix 2 [ ] DGRAM 10934 /run/systemd/shutdownd
unix 2 [ ACC ] STREAM LISTENING 18642 private/tlsmgr
。。。。
.sock linux,unix 中特有的文件,可以通訊
Path 狀態
TIME_WAIT 傳輸完成 鏈接保持着
ESTABLTSHED 已經建立鏈接正在通訊
FIN_WAIT2 狀態詳情,可參考【TCP/IP 三次握手】
netstat -an |grep 112.112.69.86:80 查看80端口 併發狀態
netstat -an |grep 112.112.69.86:80 |grep -ic estab 統計鏈接(ESTABLTSHED)正在通訊的鏈接總數 (前端 靜態網頁 2到3萬 後端 有php mysql等 2000到3000 左右
- netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
[root@localhost ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN 4
ESTABLISHED 1
tcpdump 工具
如果沒有這個工具需要安裝一下;yum install -y tcpdump
[root@localhost ~]# yum install -y tcpdump
[root@localhost ~]# tcpdump -nn -i ens33
tcpdump -i ens33
第一個n就是ip以數字的形式打印出來,如果不加就會顯示主機名
tcpdump -n -i ens33
第2n是端口
tcpdump -nn -i ens33 加上第2n 就會顯示ip,端口形式顯示
tcpdump 命令:
- -i:指定網卡
- host:指定ip
- port:指定端口
- -c :指定包數量
- -w :寫入指定文件裏,將包的內容寫入文件裏面,如果不加-w直接在屏幕上顯示的不是數據包,而是數據流向
- length 長度
tcpdump -nn -i ens33 port 22
tcpdump -nn -i ens33 port 22 -c 6
[root@localhost ~]# tcpdump -nn -i ens33 port 22 -c 6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
11:16:43.472559 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 3677319136:3677319348, ack 3881493294, win 468, length 212
11:16:43.473078 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 212, win 16425, length 0
11:16:43.473799 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 212:504, ack 1, win 468, length 292
11:16:43.474308 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 504:668, ack 1, win 468, length 164
11:16:43.474661 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 668, win 16311, length 0
11:16:43.474922 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 668:832, ack 1, win 468, length 164
6 packets captured
6 packets received by filter
0 packets dropped by kernel
- tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap 寫入指定文件裏,將包的內容寫入文件裏面,是真真的包,如果不加-w直接在屏幕上顯示的不是數據包,而是數據流向
[root@localhost ~]# tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C3 packets captured
4 packets received by filter
0 packets dropped by kernel
- tcpdump -r 查看數據流,不是數據包
[root@localhost ~]# tcpdump -r /tmp/1.cap
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
11:18:02.971264 IP linux-128.ssh > 192.168.88.1.54651: Flags [P.], seq 3677321812:3677321960, ack 3881494042, win 468, length 148
11:18:02.971994 IP 192.168.88.1.54651 > linux-128.ssh: Flags [.], ack 148, win 16139, length 0
11:18:10.905692 IP 192.168.88.1.54651 > linux-128.ssh: Flags [P.], seq 1:53, ack 148, win 16139, length 52
wireshark 工具
如果沒有需要先安裝一下 yum install -y wireshark
[root@localhost ~]# yum install -y wireshark
- 用法:tshark 只需要記住這條命令;用的時候複製一下
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"