搭建监控平台:grafana + prometheus + 硬件监控
- 安装granafa
- 非被测服务器---只要不是易捷支付机器
- yum install grafana-**.rpm -y
- systemctl restart granafa-server
- http://server_ip:3000 admin/admin
安装prometheus:是一个时序数据库,不具备收集数据功能
- 非被测服务器----只要不是易捷支付机器
- tar -zxf prometheus-2.17.1.linux-amd64.tar.gz
- 进入解压后的文件夹
- ./prometheus 可以启动
- http://server_id:9090/
- 安装node_export
- node_exporter 是要安装在被监控的机器上
- node_exporter收集硬件资源数据
- tar -xzvf node_exporter-1.1.1.linux-and64.tar.gz
- 进入解压后的文件夹
- ./node-exporter
- http://server_ip:9100
- prometheus + node_exporter配置
- prometheus配置文件 prometheus.yml
-
- job_name: 'node_exporter' static_configs: - targets: ['192.168.2.56:9100']
重启prometheus:nohup ./prometheus &
- granafa + prometheus配置
- add you data source
- 选择prometheus
- URL:http://prometheus_ip:9090
- save & Test
- import 引入模板
- 8919
- 选择数据源为上一步添加大datasource
- add you data source
- 安装stress-ng
- yum install -y epel-release.noarch && yum -y update
- yum install stress -ng
- 实操一:进程上下文切换
-
((proc_cnt = 'nproc'*10)); stress-ng ---cpu $proc_cnt ---pthread 1 --timeout 150
结论:
1、top:load average值一直在增加,系统负载在升高
2、top:CPU的 us + sy 约等于100%,全部占用CPU
3、vmstat:proces中r列有大量的数据,说明有大量的进程在竞争CPU,处于等待状态
4、vmstat:system的in(每秒中断次数)和cs(上下文切换数)都很大
5、vmstat:free、buff、catche变化不大
6、pidstat:nvcswch/s 非自愿上下文切换在逐步升高
当企业中,实际的项目,出现上述情况,我们可以理解为,进程上下文切换比较多。
解决办法:项目所在的服务器,1、要么减少运行中的进程(减少部署运行的项目),2、要么增加cpu数量
-
- 实操二:线程上下文切换 ----线程密集型
-
stress-ng --cpu 'nproc' --pthread 1024 --timeout 60
结论:
- top:load average 迅速升高
- us + sy 约等于100% us低一点,sy高一点
- vmstat 1 procs中 r队列有非常大的数据,说明有大量的CPU竞争
- system:in中断有大量的数据,cs上下文切换,也有大量的数据
- memory:free数据有明显变小,buffer基本不变,cache变大
- free:内存空闲空间,内存消耗增大
- buffer:buffer是磁盘虚拟出来的,用于内存从磁盘读数据时使用
- cache:cache是内存虚拟出来的,用于cpu与内存速度匹配
- pidstat -u -w 1:
- 自愿上下文切换比较多,非自愿上下文切换
- top:load average 迅速升高
- 当企业中,一个程序开启了大量的线程,就会使用大量的内存资源,就会出现大量的cpu竞争(从内存中获取数据,io),sy比us高,r队列有大量的等待,有大量的上下文切换,自愿上下文切换比较多
- 解决办法:1、减少项目启动的线程数,2、更换内存速度更高的内存条,3、更换使用cpu的缓存更大的cpu,4、改系统的交互分区
- 实操三:io密集型
企业项目中,应用服务器和数据库服务器是在不同的服务器上,因为他们的性能关注点不一样。应用服务器要进行大量的计算,所以关注的性能是计算能里;数据服务器,是要读写数据到数据库中,有大量的磁盘读写,所以关注的性能点是磁盘读写能力。
-
- io负载,导致系统负载比较
- stress-ng -i 6 --hdd 1 --timeout 150:该命令会开启1个worker不停的读写临时文件,同时启动6个worker不停的调用提交缓存
- top
- vmstat 1
- mpstat -P ALL 3
- pidstat -w 1
- 结论:
- top:load值升高,CPU的wa值很大,freeMem变小,buff/cache值增大
- vmstat:memory的free变小,buff基本不变,cache变大,io的bo值非常大,CPU的in、cs也都变大
- mpstat:%iowait 变得很大
- pidstat:cswch/s 自愿上下文切换变得非常大
- 企业中,出现了上述的情况,怎么解决?
- 磁盘IO:1、更换读写速度够快的磁盘 2、加大内存
- 网络IO:调整网络参数或更换速度更快的网卡

浙公网安备 33010602011771号