服务器监控

服务器监控

  1. 在搭建服务器时,除了部署webapp外,还需要服务的异常信息与服务器性能指标进行监控;
  2. 服务器使用Linux+tamcat7+Java搭建的;
  3. 编写脚本检测错误日志和服务器性能指标,一旦新生错误日志或者性能降低到设定的阀值时,则使用监控报警上传到指定账户;

服务运行监控(错误日志包含):

    webapp错误信息监控tomcat错误日志监控其他应用日志监控

机器性能指标:

一、CPU使用率/负载

机器的cpu占用率越高,说明机器处理越忙,运算型任务越多。一个任务不仅有运算部分,还会有I/O(磁盘IO和网络IO)部分,当在处理IO时,CPU会释放,因此某个时间点的CPU的占用率没有太大的意义,所以需要计算一段时间内的平均值,即平均负载(load Average)这个指标便能很好的得到对其进行表征。平均负载:它是根据一段时间内占有CPU的进程数目和等待CPU的进程数目计出来的,其中等待CPU的进程不包括处于wait状态的进程,比如在等待IO的进程,即指那些就绪状态的进程,计算出一个数后(如何计算可参见Linux内核代码),除以CPU的核数,结果:<=3则系统性能较好。<=4则系统性能可以接收。>5则系统性能负载过重,可能发生严重的问题,那么就需要扩容,要命增加核,要命分布式集群。查看命令

vmstat n m(n表示每隔n秒采集一次,m表示一共采集多少次,如果m没有,一直采集下去)

查看命令:top 命令用于显示进程信息

机器运行时间。时间越长说明机器越稳定。user用户连接数,注意不是总用户数。Load average 后面三个参数表示最近1分钟,5分钟,15分钟的系统平均负载,将平均负载除以核数,如果结果不大于3,那么系统性能较好,如果不大于4,那么系统性能可以接收,如果大于5,那么性能较差。


这里关注CPU统计那一行,top详细参见

us:用户空间占用CPU的百分比

sy:内核空间占用CPU的百分比

ni:改变过优先级的进程占用CPU的百分比

id:空闲CPU的百分比

wa:IO等待占用CPU的百分比

hi:硬终端占用CPU的百分比

si:软中断占用Cpu的百分比

top的结果看cpu负载情况,主要看us和sy。其中us<=70,sy<=35,us+sy<=70说明状态良好,同时可以结合Idle值来看,如果id<=70则表示IO的压力较大。也可以和uptime一样,看第一行。

系统CPU正常,主要有以下规则:CPU利用率:us<=70, sy<=35 us+sy<=70。引用1上下文切换,与CPU可用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。引用1可运行队列:每个处理器的可运行队列<=3个线程。

Time+ :的意思是显示粒度能精确到1/100秒,不是单位是1/100秒

二、内存

内存也是系统运行性能的一个很重要的指标,如果一个机器的内存不足,会导致进程运行异常而退出。如果内存发生泄露,则会导致大量内存被浪费而无足够可用内存,

内存监控一般包括total(机器总内存),free(机器可用内存),swap(交换区大小),cache(缓存大小)等。

查看命令vmstat。

swpd:虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足,如果不是内存泄露的原因,那么你该升级内存或者把耗内存的任务迁移到其他机器,单位为KB。

free:空闲的物理内存的大小;

buff:系统存储目录里面有什么内容,权限等的缓存,单位为KB。

cache:直接用来记忆我们打开的文件,给文件做缓冲。Linux把空闲的物理内存的一部分拿来做文件/目录和进程地址空间的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cashed会很快地被使用,单位为KB。

si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so:每秒虚拟内存写入磁盘的大小,如果这个值大于0 ,同上。

查看命令:free

第二行是内存信息,total为机器总内存,used为用户已经使用,free为多少空闲,share为多个进程共享的内存总额,buff/cache都是磁盘缓存的大小,分别同vmstat里面的buff与cache;

第三行是buff和cache总额的used与free

第四行是交换区Swap的总额/已用与free。

区别:第二行MEM的used/free与第三行的(-/+ buffers/cache)used/free的区别。这两个的区别在于使用的角度来看,第二行是从os的角度来看,因为对于os,buff和cache都是属于被使用,所以他的可用内存为4353M,已用内存是3519M,其中包含内核os使用+application使用的+buffer+cached。第三行所指的是从应用程序的角度来看,对于应用程序来说,buffer/ cache是等于可用的,因为buff/cache是为了提高文件读取的性能,当应用程序需在用到内存的时候,buff/cache会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory + buffers + cached。

第二行是内存信息,total为机器总内存,used为用户已经使用,free为多少空闲,share为多个进程共享的内存总额,buff/cache都是磁盘缓存的大小,分别同vmstat里面的buff与cache;

第三行是buff和cache总额的used与free

第四行是交换区Swap的总额/已用与free。

区别:第二行MEM的used/free与第三行的(-/+ buffers/cache)used/free的区别。这两个的区别在于使用的角度来看,第二行是从os的角度来看,因为对于os,buff和cache都是属于被使用,所以他的可用内存为4353M,已用内存是3519M,其中包含内核os使用+application使用的+buffer+cached。第三行所指的是从应用程序的角度来看,对于应用程序来说,buffer/ cache是等于可用的,因为buff/cache是为了提高文件读取的性能,当应用程序需在用到内存的时候,buff/cache会很快地被回收。

top中,关注MEM与Swap行,分别是Mem与Swap的总额,已用量,空闲量,buffers与cache,buffer是缓存目录里面有什么内容,权限等信息,而cache是用来Swap的缓存的

命令:cat /proc/meminfo

主要几个字段:

MemTotal:内存总额

Memfree:内存空闲量

Buffers:同top命令的buffers

Cache:同top命令的cache

SwapTotal:Swap区总大小

SwapFree:Swap区空闲大小

分析:Swap in(si)==0 ,Swap out (so)==0 可用内存/物理内存>=30%

三、磁盘空间,

四、磁盘IO

五、网络I/O

如果服务器的网络连接数过多,那么会造成大量的数据包在缓冲器长时间得到处理,一旦缓冲区不足,便会造成数据包丢失问题,对于tcp,数据包丢失便会重传,这有会导致大量的重传;对于UDP,数据包丢失不会进行处理,那么数据便会丢失。因此,服务器的网络连接不宜过多,需要进行监控;

服务器一般接收UDP与TCP请求,都是无状态连接,TCP传输控制协议是一种提供可靠的数据传输协议,UDP用户数据包协议是一种面向无连接的协议,即其传输简单但不可靠。

查看命令:netstat

UDP:(1) netstat -l udp | grep udp

(2) 进一步查看UDP接收的数据包情况 netstat -su

画圈的便是UDP数据包丢失统计,该项值增加了,说明存在udp数据包丢失,即网卡收到了,但是应用层没有来得及处理而造成的丢包

TCP:(1) netstat

Proto:协议名
Recv-Q:收到的请求个数
Send-Q:发送的请求个数
Local Address:本地地址与端口
Foreign Address:远程地址与端口
State:状态
PID/Program name:进程ID与进程名

(2)查看重传率:

因为TCP是可靠传输协议,如果数据包丢失会进行重传,因此TCP需要查看重传率:cat /proc/net/snmp | grep tcp

重传率为RetransSegs/outSegs分析

udp丢包率或者TCP重传率不能高于多少,这两个值有系统开发定义。通常重传率不能超过1%s。

六、连接数

对于每台服务器,都应该限制同时连接数,但是这个阀值又不好确定,因此当监测到系统负载过重时,然后取其连接数,这个值便可作为参考值。

netstat -na | sed -n '3,$p' |awk '{print $5}' | grep -v 127.0.0.1 | grep -v 0.0.0.0 | wc -l
这里写图片描述 分析
系统负载过重时,该值作为服务器的峰值参考值。如果超过1024报警

七、文件句柄数

性能指标总结

CPU
CPU利用率:us <= 70,sy <= 35,us + sy <= 70。上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。可运行队列:每个处理器的可运行队列<=3个线程。 Memory
swap in (si) == 0,swap out (so) == 0 可用内存/物理内存 >= 30% Disk
Use% <= 90% Disk I/O
I/O等待的请求比例 <= 20% Network I/O
UDP包丢包率与TCP包重传率不能超过1%/s。 Connect Num
<= 1024 File Handle Num
num/max_num <= 90%

原文地址:https://www.cnblogs.com/ranxf/p/7079746.html