CPU使用不高,但是就是应用速度慢

shangqiao 2009-06-14 10:02:19
我们开发了一个采集数据的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代表软件中断,请问这个是什么意思,怎么优化
...全文
1106 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
rshu 2009-08-30
  • 打赏
  • 举报
回复
中断都发往SI很高的那个CPU了,另外select对于大规模并发效率极低
windriver3 2009-07-29
  • 打赏
  • 举报
回复
、、??
puheavy123 2009-06-18
  • 打赏
  • 举报
回复
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,服务高峰期可以接受
jack_wq 2009-06-18
  • 打赏
  • 举报
回复
mark
wshwqh2000 2009-06-17
  • 打赏
  • 举报
回复
如果是RHEL,可以使用iostat命令跟踪IO。还有使用vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

根据你的图示,没有什么异常。有可能是应用上的问题。不过最好测试一下I/O
playmud 2009-06-17
  • 打赏
  • 举报
回复
可以看一下iostate
shangqiao 2009-06-16
  • 打赏
  • 举报
回复
是,这个数据是每分钟10W以上的数据
puheavy123 2009-06-16
  • 打赏
  • 举报
回复
关注lz...
shangqiao 2009-06-16
  • 打赏
  • 举报
回复
呵呵,又换了中方法试了一下。在前面部署了一个ngix(80端口),后面带个tomcat(8080端口),访问80端口有波动,直接访问8080端口正常。。。。。。。奇了。。。。。应该是端口的问题,我待会儿装个apache,挂在ngix后面再试试
puheavy123 2009-06-16
  • 打赏
  • 举报
回复
我还是感觉是和应用有冲突。。。。用netstat看看有没有什么特别的端口。。
shangqiao 2009-06-16
  • 打赏
  • 举报
回复
又发现一个问题,不是说连接速度波动吗!!!
我在8080端口启动一个tomcat,连接速度非常稳定,将端口修改成9090,于是发生了和我们服务器类似的波动现象。出现这种可能的最大可能性是防火墙配置,但是没有发生有和差异呀。。。。。。。

各位,有没有观点
shangqiao 2009-06-15
  • 打赏
  • 举报
回复
ding
datacode 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shangqiao 的回复:]
Cpu0 : 13.7%us, 11.7%sy, 0.0%ni, 45.7%id, 0.0%wa, 0.3%hi, 28.5%si, 0.0%st
Cpu1 : 0.3%us, 0.7%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 12.3%us, 5.1%sy, 0.0%ni, 82.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 1.0%us, 0.3%sy, 0.0%ni, 98.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
[/Quote]
这是高峰时期的数据么?
看起来不像
arczee 2009-06-15
  • 打赏
  • 举报
回复
有人说Linux中多核处理中断的话是交由一个指定的Core处理的,不知道是不是这样。
threeleafzerg007 2009-06-14
  • 打赏
  • 举报
回复
原因不清楚
SI 我知道
softirq 中断的下半部
  • 打赏
  • 举报
回复
http://blog.zol.com.cn/991/article_990102.html

瓶颈分析,看这篇文章
shangqiao 2009-06-14
  • 打赏
  • 举报
回复
但是如果是操作IO导致的SI值偏大,那也不应该是单独一个CPU偏大呀
shangqiao 2009-06-14
  • 打赏
  • 举报
回复
是,IO比较多,也比较频繁。每个业务单独一个线程每隔5秒将数据写入日志文件,总共24个业务。每天共产生的数据12G。

会不会我这块操作文件有点问题。。。。相当于24个线程并发写文件,由一个线程来调度可能会合适一点,明天我试一下。。。
shangqiao 2009-06-14
  • 打赏
  • 举报
回复
Cpu0 : 13.7%us, 11.7%sy, 0.0%ni, 45.7%id, 0.0%wa, 0.3%hi, 28.5%si, 0.0%st
Cpu1 : 0.3%us, 0.7%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 12.3%us, 5.1%sy, 0.0%ni, 82.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 1.0%us, 0.3%sy, 0.0%ni, 98.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
shangqiao 2009-06-14
  • 打赏
  • 举报
回复
那哪些操作会导致SI值变高

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧