当前位置: 技术问答>linux和unix
CPU使用不高,但是就是应用速度慢
来源: 互联网 发布时间:2016-06-27
本文导语: 我们开发了一个采集数据的server, 目前每天有1亿的量,高峰每分钟13W请求; 使用top观察CPU,CPU的占用率也不高,四核CPU空闲其中三个都在80左右,另外一个在40%;内存控制上也没有发现问题,%wa值一直在1%以下,但...
我们开发了一个采集数据的server,
目前每天有1亿的量,高峰每分钟13W请求;
使用top观察CPU,CPU的占用率也不高,四核CPU空闲其中三个都在80左右,另外一个在40%;内存控制上也没有发现问题,%wa值一直在1%以下,但是其中一个CPU的SI值很高,怀疑Select操作是在这个CPU上运行
使用netstat命令查看网络连接处理ESTABLISHED状态的链接居然有1100,SYN_RECV状态也有600多;
在前端使用客户端访问,有时耗时200MS左右,但是偶尔(10%几率)会在2S左右;
我们使用HTTP服务,自己开发的web server,当初性能压力测试,在webserver上挂空应用,10台压力服务器全上,压倒每秒2W能没有到web server瓶颈,因此瓶颈应该不在webserver上。但是当初只压应用,也在几W的量上。所以我怀疑是不是在线程调度上哪儿不合适,目前我开的50线程(也尝试过将线程减少或增大,影响不大)
请问导致前端应用慢的原因可能是什么,还有SI代表软件中断,请问这个是什么意思,怎么优化
目前每天有1亿的量,高峰每分钟13W请求;
使用top观察CPU,CPU的占用率也不高,四核CPU空闲其中三个都在80左右,另外一个在40%;内存控制上也没有发现问题,%wa值一直在1%以下,但是其中一个CPU的SI值很高,怀疑Select操作是在这个CPU上运行
使用netstat命令查看网络连接处理ESTABLISHED状态的链接居然有1100,SYN_RECV状态也有600多;
在前端使用客户端访问,有时耗时200MS左右,但是偶尔(10%几率)会在2S左右;
我们使用HTTP服务,自己开发的web server,当初性能压力测试,在webserver上挂空应用,10台压力服务器全上,压倒每秒2W能没有到web server瓶颈,因此瓶颈应该不在webserver上。但是当初只压应用,也在几W的量上。所以我怀疑是不是在线程调度上哪儿不合适,目前我开的50线程(也尝试过将线程减少或增大,影响不大)
请问导致前端应用慢的原因可能是什么,还有SI代表软件中断,请问这个是什么意思,怎么优化
|
|
sar
iostat
vmstat
ps aux
都对比看看,最好是对vmstat好好进行分析,看看问题出在哪里
假设输出的信息中
r经常大于 3-4 ,且id经常少于50,表cpu的负荷很重。
pi,po 长期不等于0,表示内存不足。
disk 经常不等于0, 且在 b中的队列大于2-3, 表示 io性能不好。
Procs r: 运行的进程比较多,系统很繁忙
Io bo: 磁盘写的数据量稍大
Cpu us: 持续大于50-60,服务高峰期可以接受
Cpu wa: 稍微有些高
Cpu id:持续小于50,服务高峰期可以接受
iostat
vmstat
ps aux
都对比看看,最好是对vmstat好好进行分析,看看问题出在哪里
假设输出的信息中
r经常大于 3-4 ,且id经常少于50,表cpu的负荷很重。
pi,po 长期不等于0,表示内存不足。
disk 经常不等于0, 且在 b中的队列大于2-3, 表示 io性能不好。
Procs r: 运行的进程比较多,系统很繁忙
Io bo: 磁盘写的数据量稍大
Cpu us: 持续大于50-60,服务高峰期可以接受
Cpu wa: 稍微有些高
Cpu id:持续小于50,服务高峰期可以接受