今天查看服务器,利用top命令发现其loadaverage 偏大,问了下运维的同学,其一般正常值 在1以内,按理最大不超过其cpu个数。
其load average有三个数,分别表示最近1分钟,5分钟,15分钟的系统平均负载。
其查看cpu个数,可以在文件cat /proc/cpuinfo中进行查看。查看其proseeor,或者是用如下命令进行查看
grep -c 'model name' /proc/cpuinfo 。
当发现其负载超过1那么就说明流量访问很大了,应该不正常,此时要看下你的并发数,看下关闭链接,等待关闭的链接,及已经建立的链接的参数:其命令如下:
netstat -n|grep 80 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}',这里会显示出各个指示的链接数
运行这个命令后发现其close_wait很大,运维的同事说因为这个很大造成其负载过大,且cpu使用率过大。
运用以下命令netstat -n|grep CLOSE_WAIT|awk '{print $5}'|sort |uniq -c |sort -rn |head -n20
这条命令是统计close_wait的ip有多少,其造成等待个数的前20个如下:
发现其48上有不少等待,这个调用接口造成的,然后修改接口调用,将第二次调用从缓存中取,重启后恢复正常。