1. sar
周口網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),周口網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為周口上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的周口做網(wǎng)站的公司定做!
每兩秒刷新一次, 總共5次
[root@dbhost01 ~]# sar 2 5
Linux 2.6.32-504.el6.x86_64 (dbhost01) 03/30/2018 _x86_64_ (4 CPU)
02:53:15 PM CPU %user %nice %system %iowait %steal %idle
02:53:17 PM all 0.66 0.00 1.72 0.66 0.00 96.96
02:53:19 PM all 1.34 0.00 3.35 0.80 0.00 94.51
02:53:21 PM all 0.79 0.00 1.59 1.45 0.00 96.17
02:53:23 PM all 0.40 0.00 2.00 0.80 0.00 96.80
02:53:25 PM all 0.66 0.00 1.85 0.79 0.00 96.70
Average: all 0.77 0.00 2.10 0.90 0.00 96.23
2. top
top -a 按照內(nèi)存降序
[root@dbhost01 ~]# top -a
top - 15:00:54 up 6:04, 1 user, load average: 0.31, 0.19, 0.11
Tasks: 306 total, 1 running, 305 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.8%us, 2.4%sy, 0.0%ni, 88.9%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 4048972k total, 3848576k used, 200396k free, 134844k buffers
Swap: 4194300k total, 1788k used, 4192512k free, 1835360k cached
3. vmstat
vmstat用于顯示虛擬內(nèi)存,內(nèi)核線程,磁盤,系統(tǒng)進(jìn)程, CPU活動(dòng)等統(tǒng)計(jì)信息。
需要安裝sysstat工具。
[root@dbhost01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 1788 202508 135064 1835920 0 0 32 26 96 276 1 2 95 1 0
[root@dbhost01 ~]#
[root@dbhost01 ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 1788 202336 135068 1836000 0 0 32 26 97 276 1 2 95 1 0
0 0 1788 202624 135068 1836000 0 0 25 29 4012 6682 0 1 98 1 0
0 0 1788 202624 135072 1836004 0 0 57 87 4003 6685 0 1 98 1 0
1 0 1788 202508 135072 1836004 0 0 57 33 4402 7353 1 1 98 0 0
0 0 1788 202540 135076 1836004 0 0 33 47 4002 6674 0 1 98 1 0
4. lsof(list open files)
[root@dbhost01 ~]# lsof | grep 1521
certmonge 2348 root 16r FIFO 0,8 0t0 15212 pipe
certmonge 2348 root 18r FIFO 0,8 0t0 15218 pipe
gipcd.bin 2754 grid 109u unix 0xffff880139152180 0t0 36936 socket
5. tcpdump
tcpdump -i eth1
15:24:28.777779 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.777809 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.778976 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779011 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779013 IP 192.168.2.82.50990 dbhost01.ssh: Flags [.], ack 393968, win 16652, options [nop,nop,TS val 2443327 ecr 22996360], length 0
15:24:28.779481 IP dbhost02-priv.23602 dbhost01-priv.24271: UDP, length 556
15:24:28.779585 IP dbhost01-priv.24271 dbhost02-priv.23602: UDP, length 80
15:24:28.779909 IP dbhost01-priv.24271 dbhost02-priv.23602: UDP, length 80
15:24:28.780584 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780590 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780820 IP dbhost01-priv.24271 dbhost02-priv.23602: UDP, length 556
15:24:28.782232 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
15:24:28.782235 IP dbhost01.ssh 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
6.netstat
[root@dbhost01 ~]# netstat -a | grep oracle
unix 2 [ ACC ] STREAM LISTENING 31861 /var/tmp/.oracle/ora_gipc_sdbhost01gridmyracdb-clusterCRFM_SIPC
unix 2 [ ACC ] STREAM LISTENING 33820 /var/tmp/.oracle/sdbhost01DBG_LOGD
unix 2 [ ACC ] STREAM LISTENING 41177 /var/tmp/.oracle/sdbhost01DBG_EVMD
unix 2 [ ACC ] STREAM LISTENING 65106 /var/tmp/.oracle/sAevm
unix 2 [ ACC ] STREAM LISTENING 65108 /var/tmp/.oracle/sSYSTEM.evm.acceptor.auth
7. htop
需要安裝
8. iostat
Total DISK READ: 91.48 K/s | Total DISK WRITE: 45.27 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
4071 be/4 oracle 30.18 K/s 0.00 B/s 0.00 % 4.69 % ora_lmon_orcl1
4117 be/4 oracle 60.36 K/s 15.09 K/s 0.00 % 3.69 % ora_ckpt_orcl1
2989 rt/4 grid 965.71 B/s 0.00 B/s 0.00 % 2.13 % ocssd.bin
4099 be/4 oracle 0.00 B/s 30.18 K/s 0.00 % 0.07 % ora_ckpt_test
2987 rt/4 grid 0.00 B/s 482.86 B/s 0.00 % 0.03 % ocssd.bin
2979 rt/3 root 0.00 B/s 3.77 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
2980 rt/3 root 0.00 B/s 15.09 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
9. iftop(流量監(jiān)控工具)
Linux下的Top命令是一個(gè)性能監(jiān)控程序,許多系統(tǒng)管理員常常用它來監(jiān)控Linux性能,在許多Linux或者類Unix操作系統(tǒng)里都有這個(gè)命令。Top命令用于按一定的順序顯示所有正在運(yùn)行而且處于活動(dòng)狀態(tài)的實(shí)時(shí)進(jìn)程,而且會(huì)定期更新顯示結(jié)果。這條命令顯示了CPU的使用率、內(nèi)存使用率、交換內(nèi)存使用大小、高速緩存使用大小、緩沖區(qū)使用大小,進(jìn)程PID、所使用命令以及其他。它還可以顯示正在運(yùn)行進(jìn)程的內(nèi)存和CPU占用多的情況。對(duì)系統(tǒng)管理員來說,top命令式是一個(gè)非常有用的,它可用于監(jiān)控系統(tǒng)并在需要的時(shí)候采取正確的處理動(dòng)作。命令需求網(wǎng)頁
除了保證程序的正確性以外,在項(xiàng)目開發(fā)中往往還關(guān)心性能和穩(wěn)定性。我們往往要對(duì)內(nèi)核、應(yīng)用程序或整個(gè)系統(tǒng)進(jìn)行性能優(yōu)化。在性能優(yōu)化中常用的手段如下:
使用top、vmstat、iostat、sysctl等常用工具
top命令用于顯示處理器的活動(dòng)狀況。在缺省情況下,顯示占用CPU最多的任務(wù),并且每隔5s做一次刷新;vmstat命令用于報(bào)告關(guān)于內(nèi)核線程、虛擬內(nèi)存、磁盤、陷阱和CPU活動(dòng)的統(tǒng)計(jì)信息;iostat命令用于分析各個(gè)磁盤的傳輸閑忙狀況;netstat是用來檢測網(wǎng)絡(luò)信息的工具; sar用于收集、報(bào)告或者保存系統(tǒng)活動(dòng)信息,其中,sar用于顯示數(shù)據(jù),sar1和sar2用于收集和保存數(shù)據(jù)
sysctl是一個(gè)可用于改變正在運(yùn)行中的Linux系統(tǒng)的接口。用sysctl 可以讀取幾白個(gè)以上的系統(tǒng)變量,如用sysctl—a可讀取所有變量。
sysctl的實(shí)現(xiàn)原理是:所有的內(nèi)核參數(shù)在/proc/sys中形成一個(gè)樹狀結(jié)構(gòu),sysctl系統(tǒng)調(diào)用的內(nèi)核函數(shù)是sys_sysctl,匹配項(xiàng)目后,最后的讀寫在do_sysctl_strategy中完成。
2.使用高級(jí)分析手段,如OProfile、gprof
OProfile可以幫助用戶識(shí)別諸如模塊的占用時(shí)間、循環(huán)的展開、高速緩存的使用率低、低效的類型轉(zhuǎn)換和冗余操作、錯(cuò)誤預(yù)測轉(zhuǎn)移等問題。它收集有關(guān)處理器事件的信息,其中包括TLB的故障、停機(jī)、存儲(chǔ)器訪問以及緩存命中和未命中的指令的攫取數(shù)量。OProfile支持兩種采樣方式:基于事件的采樣(Event Based)和基于時(shí)間的采樣(Time Based)?;谑录牟蓸邮荗Profile只記錄特定事件(比如L2緩存未命中)的發(fā)生次數(shù),當(dāng)達(dá)到用戶設(shè)定的定值時(shí)Oprofile就記錄一下(采一個(gè)樣)。這種方式需要CPU內(nèi)部有性能計(jì)數(shù)器(Performace Counter))?;跁r(shí)間的采樣是OProfile借助OS時(shí)鐘中斷的機(jī)制,在每個(gè)時(shí)鐘中斷,OProfile都會(huì)記錄一次(采一次樣)。引入它的目的在于,提供對(duì)沒有性能計(jì)數(shù)器的CPU的支持,其精度相對(duì)于基于事件的采樣要低,因?yàn)橐柚鶲S時(shí)鐘中斷的支持,對(duì)于禁用中斷的代碼,OProfile不能對(duì)其進(jìn)行分析。
記錄一下自己常用的linux系統(tǒng)命令,方便以后查閱,發(fā)覺記憶越來越不行了
找到最耗CPU的java線程ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
結(jié)果展示:
這個(gè)命令的作用,主要是可以獲取到對(duì)應(yīng)一個(gè)進(jìn)程下的線程的一些信息。 比如你想分析一下一個(gè)java進(jìn)程的一些運(yùn)行瓶頸點(diǎn),可以通過該命令找到所有當(dāng)前Thread的占用CPU的時(shí)間,也就是這里的最后一列。
比如這里找到了一個(gè)TID : 30834 ,所占用的TIME時(shí)間最高。
通過 printf "%x\n" 30834 首先轉(zhuǎn)化成16進(jìn)制, 繼續(xù)通過jstack命令dump出當(dāng)前的jvm進(jìn)程的堆棧信息。 通過Grep命令即可以查到對(duì)應(yīng)16進(jìn)制的線程id信息,很快就可以找到對(duì)應(yīng)最耗CPU的代碼快在哪。
簡單的解釋下,jstack下這一串線程信息內(nèi)容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 對(duì)應(yīng)的linux操作系統(tǒng)下的tid,就是前面轉(zhuǎn)化的16進(jìn)制數(shù)字
tid: 這個(gè)應(yīng)該是jvm的jmm內(nèi)存規(guī)范中的唯一地址定位,如果你詳細(xì)分析jvm的一些內(nèi)存數(shù)據(jù)時(shí)用得上,我自己還沒到那種程度,所以先放下
top命令
命令:top -Hp pid
結(jié)果顯示:
和前面的效果一下,你可以實(shí)時(shí)的跟蹤并獲取指定進(jìn)程中最耗cpu的線程。 再用前面的方法提取到對(duì)應(yīng)的線程堆棧信息。
判斷I/O瓶頸
mpstat命令
命令:mpstat -P ALL 1 1000
結(jié)果顯示:
注意一下這里面的%iowait列,CPU等待I/O操作所花費(fèi)的時(shí)間。這個(gè)值持續(xù)很高通??赡苁荌/O瓶頸所導(dǎo)致的。
通過這個(gè)參數(shù)可以比較直觀的看出當(dāng)前的I/O操作是否存在瓶頸
iostat命令
命令: iostat -m -x 1 1000
同樣你可以觀察對(duì)應(yīng)的CPU中的%iowait數(shù)據(jù),除此之外iostat還提供了一些更詳細(xì)的I/O狀態(tài)數(shù)據(jù),比如比較重要的有:
avgqu-sz : The average queue length of the requests that were issued to the device. (磁盤隊(duì)列的請(qǐng)求長度,正常的話2,3比較好??梢院蚦pu的load一樣的理解)
await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一個(gè)I/O操作從wait到完成的總時(shí)間)
svctm和%util都是代表處理該I/O請(qǐng)求花費(fèi)的時(shí)間和CPU的時(shí)間比例。 判斷是否瓶頸時(shí),這兩個(gè)參數(shù)不是主要的
r/s w/s 和 rMB/s wMB/s 都是代表當(dāng)前系統(tǒng)處理的I/O的一些狀態(tài),前者是我們常說的tps,后者就是吞吐量。這也是評(píng)價(jià)一個(gè)系統(tǒng)的性能指標(biāo)
pid命令
命令: pidstat -p pid -u -d -t -w -h 1 1000
結(jié)果顯示:
相當(dāng)實(shí)用的一個(gè)命令,可以基于當(dāng)個(gè)進(jìn)程分析對(duì)應(yīng)的性能數(shù)據(jù),包括CPU,I/O,IR , CS等,可以方便開發(fā)者更加精細(xì)化的觀察系統(tǒng)的運(yùn)行狀態(tài)。不過pidstat貌似是在2.6內(nèi)核的一些較新的版本才有,需要安裝sysstat包。
ubuntu下,可以通過sudo apt-get install sysstat進(jìn)行安裝。
sar命令
命令:sar -x pid 1 1000
sar也可以指定對(duì)應(yīng)的pid,關(guān)注固定的幾個(gè)參數(shù),沒有pidstat那么強(qiáng)大。 看不到對(duì)應(yīng)的I/O, IR等信息。
sar的功能可以覆蓋mpstat , iostat的相關(guān)功能。
dstat命令
命令:dstat -y --tcp 1 1000
通過dstat --tcp可以比較方便的看到當(dāng)前的tcp的各種狀態(tài),不需要每次netstat -nat去看
其他命令
netstat -natp : 查看對(duì)應(yīng)的網(wǎng)絡(luò)鏈接,關(guān)注下Recv-Q , Send-Q , State。
lsof -p pid : 查找對(duì)應(yīng)pid的文件句柄
lsof -i : 80 : 查找對(duì)應(yīng)端口被哪個(gè)進(jìn)程占用
lsof /tmp/1.txt :查找對(duì)應(yīng)文件被哪個(gè)進(jìn)程占用
tcpdump / wireshark :抓包分析工具
jstat / jmap / jstack / jps 等一系列的java監(jiān)控命令
最后
如果你想做一些性能調(diào)優(yōu)的工作,一定要善于利用一些工具進(jìn)行關(guān)注相應(yīng)的狀態(tài)。通過linux命令你可以比較方便的觀測到CPU , I/O , network等一些比較外圍的狀態(tài), 很多時(shí)候就已經(jīng)可以解決大部分的問題。jvm內(nèi)部的一些運(yùn)行狀態(tài)監(jiān)控,得需要借助一些特有的工具進(jìn)行細(xì)粒度的觀測。
cat /proc/cpuinfo中的信息
processor 邏輯處理器的id。
physical id 物理封裝的處理器的id。
core id 每個(gè)核心的id。
cpu cores 位于相同物理封裝的處理器中的內(nèi)核數(shù)量。
siblings 位于相同物理封裝的處理器中的邏輯處理器的數(shù)量。
1 查看物理CPU的個(gè)數(shù)
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l
2、 查看邏輯CPU的個(gè)數(shù)
#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
(查看當(dāng)前操作系統(tǒng)內(nèi)核信息)
7、 # cat /etc/issue | grep Linux
8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看當(dāng)前操作系統(tǒng)發(fā)行版信息)
9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8個(gè)邏輯CPU, 也知道了CPU型號(hào))
9 # cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(說明實(shí)際上是兩顆4核的CPU)
10、# getconf LONG_BIT
32
(說明當(dāng)前CPU運(yùn)行在32bit模式下, 但不代表CPU不支持64bit)
11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l
8(結(jié)果大于0, 說明支持64bit計(jì)算. lm指long mode, 支持lm則是64bit)
12、如何獲得CPU的詳細(xì)信息:
linux命令:cat /proc/cpuinfo
13、用命令判斷幾個(gè)物理CPU,幾個(gè)核等:
邏輯CPU個(gè)數(shù):
# cat /proc/cpuinfo | grep "processor" | wc -l
物理CPU個(gè)數(shù):
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
14、每個(gè)物理CPU中Core的個(gè)數(shù):
# cat /proc/cpuinfo | grep "cpu cores" | wc -l
15、是否為超線程?如果有兩個(gè)邏輯CPU具有相同的”core id”,那么超線程是打開的。每個(gè)物理CPU中邏輯CPU(可能是core, threads或both)的個(gè)數(shù):
# cat /proc/cpuinfo | grep "siblings"
1.查看CPU信息命令
cat /proc/cpuinfo
2.查看內(nèi)存信息命令
cat /proc/meminfo
3.查看硬盤信息命令
fdisk -l
查看CPU信息(型號(hào))
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8個(gè)邏輯CPU, 也知道了CPU型號(hào))
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(說明實(shí)際上是兩顆4核的CPU)
PS:Jay added on 10th, May, 2011
# 其實(shí)是可能有超線程HT技術(shù),不一定是有4核,也可能是2核4線程;當(dāng)時(shí)還理解不清楚
# getconf LONG_BIT
32
(說明當(dāng)前CPU運(yùn)行在32bit模式下, 但不代表CPU不支持64bit)
#
網(wǎng)站題目:對(duì)linux命令監(jiān)控,linux網(wǎng)絡(luò)監(jiān)控命令
本文地址:http://jinyejixie.com/article14/dssidde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)