6. linux服務器監控性能測試

目的

發現服務器性能瓶頸.
服務器配置的不同,能承載的任務和壓力也是不同的.

性能指標

cpu

計算速度能力

內存

數據臨時存放位置

磁盤

數據存儲位置

網絡

數據傳動帶

版本

性能改進.
我們保證不了測試環境和生產環境的性能一樣,但是要保證系統版本一樣.

性能損耗

實際性能和預估性能差異.

進程與線程

進程: 具有一定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位. 例如打開瀏覽器.
線程:是進程的一個實體.是cpu調度和分配的基本單位.它是比進程更小的能夠獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源. 一個線程可以創建和車險另一個線程.

區別

一個線程只能屬於一個進程. 而一個進程可以擁有多個線程.
線程是進程工作的最小單位.
一個進程會分配一個地址空間,進程與進程之間不共享地址空間,即不共享內存.
同一個進程的不同的多個線程,共享父進程的地址空間.
線程在執行過程中,需要協作同步,不同進程的線程間要利用消息通信的辦法實現同步.通常用鎖實現.
線程作爲調度和分配的基本單位,進程作爲擁有資源的基本單位.

優缺點

進程優點

進程互相獨立,不影響主程序的穩定性,子進程崩潰不影響其他進程.
通過增加cpu,擴充性能,多核心多線程.
儘量減少線程加鎖與解鎖的影響,可以極大的提高性能.

進程缺點

擴機控制複雜,需要和主程序交互
多進程調度開銷大.

線程優點

程序邏輯和控制方式簡單
所有線程可以直接共享內存和變量等.
消耗的資源相對較少.

線程缺點

每個線程與主程序共有地址空間,最大內存地址受限.
線程之間的同步和加鎖不易控制.
一個線程的崩潰可能影響到整個程序的穩定性.

linux常用監測命令

man

linux 下的函授手冊命令,可以查看所有命令使用方法
例如 man ls

top

-h: 幫助
-p: 監控指定進程.多個的時候用逗號分隔.這個命令只能在命令行使用.

在這裏插入圖片描述

M:按照內存使用率倒序
P:按照cpu使用率倒序
z:彩色/黑白顯示.

運行 top 後按M鍵或者P鍵或者z鍵.

load average:1分鐘,5分鐘15分鐘的平均負載

評價負載情況: 單核cpu情況load average爲1表示滿負荷,同理,多核cpu滿負載的load average的值爲1*cpu核數.

# 查看cpu核數
cat /proc/cpuinfo | grep 'processor' | wc -l

在這裏插入圖片描述

vmstat

監控進程狀態,內存,磁盤,cpu等
在這裏插入圖片描述

-S:使用指定單位顯示.
參數有k, K, m, M
分別是1000,1024,1000000,1048576字節(byte),默認是K

在這裏插入圖片描述

vmstat 1     表示一秒鐘打印一行監控
vmstat 5 2   表示五秒鐘打印一次監控,一共打印兩次

這樣就事實監控了.  

在這裏插入圖片描述

free

監控內存使用狀態

total:總計物理內存大小
used:已用
free:可用
shared:多個進程共享的內存
buff/cache:磁盤緩存大小
free -h
會帶上單位

在這裏插入圖片描述

mpstat

實時監控cpu.
查看多核心cpu每個核心的統計數據
要是用的先安裝

yum install -y sysstat

[root@sixmillions ~]# mpstat -h
Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
[ -P { <cpu> [,...] | ON | ALL } ]

mpstat -P 核心 表示監控哪個核心,不寫默認全部.  
mpstat internal 多長時間返回一次結果

mpstat 1 2 監控所有核心,每一秒返回一次,一共返回兩次
mpstat -P 1 2  監控核心1,每兩秒返回一次結果
mpstat -P 2 3 4 監控核心2,每三秒返回一次結果,一共返回4次

注意第一樣是從開機到現在的平均值,所以從第二行開始看就可以.
在這裏插入圖片描述

netstat

實時監控網絡

-n  拒絕顯示別名,能顯示數據的全部轉化成數字
-l   僅列出有在Listen(監聽)的服務狀態,比如tomcat默認監聽8080端口.
-p   顯示建立相關鏈接的程序名
-t   (tcp)顯示tcp選項
-u  (udp)顯示udp相關選項
-i  顯示自動匹配接口的信息  
-c  每個一個固定時間 執行該netstat命令
netstat -ntlp

可以查看接口監聽狀態
在這裏插入圖片描述

netstat -i
netstat -i -c 2    每兩秒返回一次

在這裏插入圖片描述

iostat

監控磁盤

# 安裝一下
yum install -y sysstat

在這裏插入圖片描述
也可以加時間和測試

iostat -x 2 3   每兩秒返回一次結果,返回三次.  

在這裏插入圖片描述

萬能命令

sar 命令
使用抱錯

[root@sixmillions bin]# sar
Cannot open /var/log/sa/sa10: No such file or directory

解決方式

print=$(date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%d")
sar -o $print

進程追蹤命令 strace

yum install strace
-p 跟蹤指定進程
-f  跟蹤由fork子進程系統調用
-c  統計每次嗲用執行時間  次數 和 出錯次數
-t  在輸出的時候加上時間, -tt  時間精確到微妙
-e 過濾器
-o file   結果輸出到文件

監控工具 nmon

http://nmon.sourceforge.net/pmwiki.php?n=Site.Download

wget http://sourceforge.net/projects/nmon/files/nmon16e_mpginc.tar.gz

tar -zxvf nmon16e_mpginc.tar.gz

https://www.jianshu.com/p/7858803b0e18

定時任務

crontab
在這裏插入圖片描述

查看 啓動 停止 重啓

/sbin/service crond status
/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload 重載配置
[root@sixmillions packages]# /sbin/service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-04-16 21:07:40 CST; 3 weeks 2 days ago
 Main PID: 25740 (crond)
   CGroup: /system.slice/crond.service
           └─25740 /usr/sbin/crond -n

Apr 16 21:07:40 sixmillions systemd[1]: Started Command Scheduler.
Apr 16 21:07:40 sixmillions crond[25740]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 69% if used.)
Apr 16 21:07:40 sixmillions crond[25740]: (CRON) INFO (running with inotify support)
Apr 16 21:07:40 sixmillions crond[25740]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
實例1:每1分鐘執行一次command
命令:
* * * * * command
實例2:每小時的第3和第15分鐘執行
命令:
3,15 * * * * command
實例3:在上午8點到11點的第3和第15分鐘執行
命令:
3,15 8-11 * * * command
實例4:每隔兩天的上午8點到11點的第3和第15分鐘執行
命令:
3,15 8-11 */2 * * command
實例5:每個星期一的上午8點到11點的第3和第15分鐘執行
命令:
3,15 8-11 * * 1 command
實例6:每晚的21:30重啓smb
命令:
30 21 * * * /etc/init.d/smb restart


實例7:每月1、10、22日的4 : 45重啓smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart


實例8:每週六、週日的1 : 10重啓smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart


實例9:每天18 : 00至23 : 00之間每隔30分鐘重啓smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart


實例10:每星期六的晚上11 : 00 pm重啓smb
命令:
0 23 * * 6 /etc/init.d/smb restart


實例11:每一小時重啓smb
命令:
* */1 * * * /etc/init.d/smb restart


實例12:晚上11點到早上7點之間,每隔一小時重啓smb
命令:
* 23-7/1 * * * /etc/init.d/smb restart
實例13:每月的4號與每週一到週三的11點重啓smb
命令:
0 11 4 * mon-wed /etc/init.d/smb restart
實例14:一月一號的4點重啓smb
命令:
0 4 1 jan * /etc/init.d/smb restart


實例15:每小時執行/etc/cron.hourly目錄內的腳本
命令:
01 * * * * root run-parts /etc/cron.hourly
說明:
run-parts這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是目錄名了

https://www.cnblogs.com/intval/p/5763929.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章