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

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