当出现业务访问异常的情况,在测试服务器能正常远程的情况下,就要检查服务器内部的运行情况才能分析出具体问题。如果不能远程,重启就恢复,大概率也是服务器性能有问题了,主要从以下几个方面排查: 1、CPU和内存的消耗情况 (1) CPU占用率过高,系统响应速度变慢,甚至出现卡顿现象,就好比在一个群面场景下,主考官同时向你提问,并要求快问快答,再好用的脑子也要宕机了。 (2) 内存是临时存储空间,内存消耗过高,系统会使用交换分区(swap),系统的响应速度就会变慢。 可以使用“top”命令查看,比如下图中框出来的参数: %Cpu(s): us用户cpu占用时间,sy是系统调用cpu占用时间,wa是cpu等待io的时间,前面两个比较直观,但是第三个其实也很重要,如果wa很高,那么你就该重点关注下磁盘的负载了,尤其是像mysql这种服务器。 load average:cpu任务队列的负载,这个队列包括正在运行的任务和等待运行的任务,三个数字分别代表系统过去1分钟、5分钟和15分钟内的平均负载值。负载高低需结合CPU核心数评估,多核系统理想值<CPU核心数*0.7,比如当 前系统的CPU是8核,小于0.56均为正常范围。 KiB Mem :内存占用情况,total总内存,free空余内存, used已经分配内存,buff/cache块设备和缓冲区占用的内存,因为Linux的内存分配,如果有剩余内存,他就会将内存用于cache,这样可以较少磁盘的读写提高效率,如果有应用申请内存,buff/cache这部分内存也是可用的,所以正真的剩余内存应该是free+buff/cache; KiB Swap:线上服务器一般都是禁用状态,所以不用看这项。 2、磁盘空间占用情况 当硬盘I/O过高时,系统响应速度变慢,硬盘读写速度也会慢下来,严重的可能导致文件系统损坏。常见的HDD依赖磁头移动和盘片旋转,连续读写速度约100-200MB/s,随机读写速度较低(如50-100MB/s);SSD采用闪存技术,无需磁头寻道,连续读写速度通常可达300-600MB/s,随机读写速度也显著高于HDD。 使用“iostat”命令查看: CPU属性值说明: %user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。 %idle:CPU空闲时间百分比。 Device属性值说明: tps:该设备每秒的传输次数 kB_read/s:每秒从设备(drive expressed)读取的数据量; kB_wrtn/s:每秒向设备(drive expressed)写入的数据量; kB_read:读取的总数据量; kB_wrtn:写入的总数量数据量; 3、网络问题 网络异常可以分为主客观原因,主观上,采购的业务带宽过少,比如访问量特别大,采购的带宽不足以支撑大并发请求,则会出现丢包,即服务器响应断断续续的。客观上,就是可能被攻击,异常流量消耗,导致正确请求无法进来。 4、系统配置不当 再好的服务器也得有一个专业技术人员使用才能发回它最大化效用。系统参数设置不当、网络配置不合适等都会导致服务器资源闲置或者浪费。