<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## Vmstat命令監控系統資源 Vmstat 【刷新延時 刷新次數】 ## 舉例 ``` [root@localhost ~]# vmstat 1 3 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 0 244952 165500 267684 0 0 0 8 6 5 0 0 99 0 0 0 0 0 244968 165500 267684 0 0 0 0 123 195 0 0 100 0 0 0 0 0 245000 165500 267684 0 0 0 0 26 44 1 0 99 0 0 ``` ## 釋義 r 表示運行隊列(就是說多少個進程真的分配到CPU),我測試的服務器目前CPU比較空閑,沒什么程序在跑,當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關系,一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載類似每秒的運行隊列。如果運行隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。 b 表示阻塞的進程,這個不多說,進程阻塞,大家懂的。 swpd 虛擬內存已使用的大小,如果大于0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么你該升級內存了或者把耗內存的任務遷移到其他機器。 free 空閑的物理內存的大小,我的機器內存總共8G,剩余3415M。 buff Linux/Unix系統是用來存儲,目錄里面有什么內容,權限等的緩存,我本機大概占用300多M cache cache直接用來記憶我們打開的文件,給文件做緩沖,我本機大概占用300多M(這里是Linux/Unix的聰明之處,把空閑的物理內存的一部分拿來做文件和目錄的緩存,是為了提高 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。) si 每秒從磁盤讀入虛擬內存的大小,如果這個值大于0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。我的機器內存充裕,一切正常。 so 每秒虛擬內存寫入磁盤的大小,如果這個值大于0,同上。 bi 塊設備每秒接收的塊數量,這里的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是1024byte,我本機上沒什么IO操作,所以一直是0,但是我曾在處理拷貝大量數據(2-3T)的機器上看過可以達到140000/s,磁盤寫入速度差不多140M每秒 bo 塊設備每秒發送的塊數量,例如我們讀取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調整。 in 每秒CPU的中斷次數,包括時間中斷 cs 每秒上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU干正經事的時間少了,CPU沒有充分利用,是不可取的。 us 用戶CPU時間,我曾經在一個做加密解密很頻繁的服務器上,可以看到us接近100,r運行隊列達到80(機器在做壓力測試,性能表現不佳)。 sy 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。 id 空閑 CPU時間,一般來說,id + us + sy = 100,一般我認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。 wt 等待IO CPU時間。 ## 緩存和緩沖的區別 簡單地說緩存(cache)是用來加速數據從硬盤中‘讀取’的,而緩沖(buffer)是用來加速數據’寫入‘硬盤的。 ## dmesg開機時沒和監測信息 dmesg dmesg | grep CPU ## free命令查看內存使用狀態 free [-b|-k|-m|-g] 選項: -b:以Byte為單位顯示內存使用情況; -k:以KB為單位顯示內存使用情況; -m:以MB為單位顯示內存使用情況; -o:不顯示緩沖區調節列; -s<間隔秒數>:持續觀察內存使用狀況; -t:顯示內存總和列; -V:顯示版本信息。 ``` root@iZ2ze43t8c5urdfrq2dh4mZ:~# free -m total used free shared buff/cache available Mem: 992 177 169 2 644 629 Swap: 0 0 0 ``` 第一部分Mem行解釋: total:內存總數; used:已經使用的內存數; free:空閑的內存數; shared:當前已經廢棄不用; buffers Buffer:緩存內存數; cached Page:緩存內存數。 關系:total = used + free 第二部分(-/+ buffers/cache)解釋: ``` (-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached (+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached ``` 可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。 第三部分是指交換分區。 第三部分: total是swap(交換分區)的總數,used是已經使用的swap數,free是空閑swap數。默認單位KB ## 查看CPU cat /proc/cpuinfo ## uptime命令 顯示系統啟動時間和平均負載,也是top命令第一行,w命令也可以看見。 ## 查看系統與內核相關信息 uname 選項: -a或--all:顯示全部的信息; -m或--machine:顯示電腦類型; -n或-nodename:顯示在網絡上的主機名稱; -r或--release:顯示操作系統的發行編號; -s或--sysname:顯示操作系統名稱; -v:顯示操作系統的版本; -p或--processor:輸出處理器類型或"unknown"; -i或--hardware-platform:輸出硬件平臺或"unknown"; -o或--operating-system:輸出操作系統名稱; ## 判斷系統位數 ``` [root@localhost ~]# file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped ``` ## 查詢當前linux系統的發行版本 ``` root@iZ2ze43t8c5urdfrq2dh4mZ:~# lsb_release -a LSB Version: core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch Distributor ID: Ubuntu Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial ``` ## lsof (list open files)命令 Lsof是一個列出當前系統打開文件的工具。在linux系統環境下,任何事物都可以以文件形式存在,通過文件不僅可以訪問常規的數據,還可以訪問網絡連接和硬件。 適應條件:lsof訪問的是核心文件和各種文件,所以必須以root用戶的身份運行才能充分發揮其功能。 語法: ``` lsof [選項] [絕對路徑的文件名] ``` 簡單使用: ``` root@iZ2ze43t8c5urdfrq2dh4mZ:~# lsof | head -10 COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,1 4096 2 / systemd 1 root rtd DIR 253,1 4096 2 / systemd 1 root txt REG 253,1 1577232 1179964 /lib/systemd/systemd systemd 1 root mem REG 253,1 18976 1180262 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 systemd 1 root mem REG 253,1 262408 1180137 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 systemd 1 root mem REG 253,1 14608 1185255 /lib/x86_64-linux-gnu/libdl-2.23.so systemd 1 root mem REG 253,1 456632 1180223 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 systemd 1 root mem REG 253,1 1868984 1185266 /lib/x86_64-linux-gnu/libc-2.23.so systemd 1 root mem REG 253,1 138696 1185249 /lib/x86_64-linux-gnu/libpthread-2.23.so ``` 每行顯示一個打開的文件,默認如果后面不跟任何東西,將打開系統打開的所有文件。 ## 釋義 COMMAND :進程名稱 PID:進程標識符 USER:進程所有者 FD:文件描述符,應用程序通過文件描述符識別到該文件。如cwd、txt等 TYPE:文件類型,如DIR,REG DEVICE:指定磁盤名稱 SIZE:文件大小 NODE:索引節點(文件在磁盤上的標識) NAME:打開文件的確切名稱 ### 常用命令 lsof abc.txt //顯示開啟文件abc.txt的進程 lsof -c abc //顯示abc進程現在打開的文件 lsof -c -p //1234 列出進程號為1234的進程所打開的文件 lsof -g gid //顯示歸屬gid的進程情況 lsof +d /usr/local/ //顯示目錄下被進程開啟的文件 lsof +D /usr/local/ //同上,但是會搜索目錄下的目錄,時間較長 lsof -d 4 //顯示使用fd為4的進程 lsof -i //用以顯示符合條件的進程情況 #### 下面的一些其它東西需要牢: 默認 : 沒有選項,lsof列出活躍進程的所有打開文件 組合 : 可以將選項組合到一起,如-abc,但要當心哪些選項需要參數 -a : 結果進行“與”運算(而不是“或”) -l : 在輸出顯示用戶ID而不是用戶名 -h : 獲得幫助 -t : 僅獲取進程ID -U : 獲取UNIX套接口地址 -F : 格式化輸出結果,用于其它命令。可以通過多種方式格式化,如-F pcfn(用于進程id、命令名、文件描述符、文件名,并以空終止) 獲取網絡信息 使用-i顯示所有連接 [root@node2 ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1532 root 3u IPv4 20505 0t0 TCP *:ssh (LISTEN) sshd 1532 root 4u IPv6 20507 0t0 TCP *:ssh (LISTEN) named 2159 named 20u IPv4 20041 0t0 TCP localhost:domain (LISTEN) named 2159 named 21u IPv4 20043 0t0 TCP node2:domain (LISTEN) 使用-i 6僅獲取IPv6流量 [root@node2 ~]# lsof -i 6 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1532 root 4u IPv6 20507 0t0 TCP *:ssh (LISTEN) named 2159 named 23u IPv6 20081 0t0 TCP localhost:rndc (LISTEN) master 2612 root 14u IPv6 21228 0t0 TCP localhost:smtp (LISTEN) rpcbind 26533 rpc 9u IPv6 1752830 0t0 UDP *:sunrpc rpcbind 26533 rpc 10u IPv6 1752831 0t0 UDP *:844 僅顯示TCP連接(同理可獲得UDP連接) [root@node2 ~]# lsof -iTCP COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1532 root 3u IPv4 20505 0t0 TCP *:ssh (LISTEN) sshd 1532 root 4u IPv6 20507 0t0 TCP *:ssh (LISTEN) named 2159 named 20u IPv4 20041 0t0 TCP localhost:domain (LISTEN) named 2159 named 21u IPv4 20043 0t0 TCP node2:domain (LISTEN) 使用-i:port來顯示與指定端口相關的網絡信息 [root@node2 ~]# lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1532 root 3u IPv4 20505 0t0 TCP *:ssh (LISTEN) sshd 1532 root 4u IPv6 20507 0t0 TCP *:ssh (LISTEN) sshd 125842 root 3u IPv4 2083984 0t0 TCP node2:ssh->172.16.100.78:ff-fms (ESTABLISHED) sshd 126106 root 3u IPv4 2089595 0t0 TCP node2:ssh->172.16.100.78:tapeware (ESTABLISHED) 使用@host來顯示指定到指定主機的連接(后面還可以加端口) 這對于在檢查是否開放連接到網絡中或互聯網上某個指定主機的連接時十分有用。 [root@node2 ~]# lsof -i@172.16.100.78 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 125842 root 3u IPv4 2083984 0t0 TCP node2:ssh->172.16.100.78:ff-fms (ESTABLISHED) sshd 126106 root 3u IPv4 2089595 0t0 TCP node2:ssh->172.16.100.78:tapeware (ESTABLISHED) 找出監聽端口 找出正等候連接的端口。 [root@node2 ~]# lsof -i -sTCP:LISTEN COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1532 root 3u IPv4 20505 0t0 TCP *:ssh (LISTEN) sshd 1532 root 4u IPv6 20507 0t0 TCP *:ssh (LISTEN) named 2159 named 20u IPv4 20041 0t0 TCP localhost:domain (LISTEN) named 2159 named 21u IPv4 20043 0t0 TCP node2:domain (LISTEN) 用戶信息 使用-u顯示指定用戶打開了什么 [root@node2 ~]# lsof -u nginx COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 32223 nginx cwd DIR 253,0 67 836967 /etc/nginx/conf.d nginx 32223 nginx rtd DIR 253,0 4096 128 / nginx 32223 nginx txt REG 253,0 1062288 202477571 /usr/sbin/nginx 使用-u ^user來顯示除指定用戶以外的其它所有用戶所做的事情 [root@node2 ~]# lsof -u ^root | head -20 COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME dbus-daem 894 dbus cwd DIR 253,0 4096 128 / dbus-daem 894 dbus rtd DIR 253,0 4096 128 / dbus-daem 894 dbus txt REG 253,0 441176 134616626 /usr/bin/dbus-daemon 殺死指定用戶所做的一切事情 [root@node2 ~]# kill -9 `lsof -t -u nginx` 命令和進程 可以查看指定程序或進程由什么啟動,這通常會很有用,而你可以使用lsof通過名稱或進程ID過濾來完成這個任務。下面列出了一些選項: 使用-c查看指定的命令正在使用的文件和網絡連接 [root@node2 ~]# lsof -c mysql COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld_sa 125321 mysql cwd DIR 253,0 4096 128 / mysqld_sa 125321 mysql rtd DIR 253,0 4096 128 / mysqld_sa 125321 mysql txt REG 253,0 960376 134771174 /usr/bin/bash 使用-p查看指定進程ID已打開的內容 [root@node2 ~]# lsof -p 126397 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 126397 nginx cwd DIR 253,0 67 836967 /etc/nginx/conf.d nginx 126397 nginx rtd DIR 253,0 4096 128 / nginx 126397 nginx txt REG 253,0 1062288 202477571 /usr/sbin/nginx -t選項只返回PID [root@node2 ~]# lsof -t -c nginx 31537 126397 其他 顯示與指定目錄(或文件)交互的所有一切 [root@node2 ~]# lsof /var/log/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 125846 root cwd DIR 253,0 4096 67109037 /var/log 與tcpdump類似,當你開始組合查詢時,它就顯示了它強大的功能 [root@node2 ~]# lsof -u lurker -i @172.16.47.103 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ssh 126475 root 3u IPv4 2093542 0t0 TCP node2:42889->node3:ssh (ESTABLISHED) 同時使用-t和-c選項以給進程發送 HUP 信號 [root@node2 ~]# kill -HUP `lsof -t -c nginx` 列出NFS 文件 [root@node2 ~]# lsof -N 列出Unix 套接字文 [root@node2 ~]# lsof -U eg: lsof `which httpd` //那個進程在使用apache的可執行文件 lsof /etc/passwd //那個進程在占用/etc/passwd lsof /dev/hda6 //那個進程在占用hda6 lsof /dev/cdrom //那個進程在占用光驅 lsof -c sendmail //查看sendmail進程的文件使用情況 lsof -c courier -u ^zahn //顯示出那些文件被以courier打頭的進程打開,但是并不屬于用戶zahn lsof -p 30297 //顯示那些文件被pid為30297的進程打開 lsof -D /tmp 顯示所有在/tmp文件夾中打開的instance和文件的進程。但是symbol文件并不在列 lsof -u1000 //查看uid是100的用戶的進程的文件使用情況 lsof -utony //查看用戶tony的進程的文件使用情況 lsof -u^tony //查看不是用戶tony的進程的文件使用情況(^是取反的意思) lsof -i //顯示所有打開的端口 lsof -i:80 //顯示所有打開80端口的進程 lsof -i -U //顯示所有打開的端口和UNIX domain文件 lsof -i UDP@[url]www.akadia.com:123 //顯示那些進程打開了到www.akadia.com的UDP的123(ntp)端口的鏈接 lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不斷查看目前ftp連接的情況(-r,lsof會永遠不斷的執行,直到收到中斷信號,+r,lsof會一直執行,直到沒有檔案被顯示,缺省是15s刷新) lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不將IP轉換為hostname,缺省是不加上-n參數
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看