【发布时间】:2012-11-24 04:26:22
【问题描述】:
我在生产环境中遇到了我的流程问题,我也能够在我的开发环境中模拟该问题。
该进程有 5 个线程,其中线程 3 和 4 是高度活跃的。 Thread 4 是对消息进行排队的生产者,Thread 3 是对消息出队的消费者。两个线程都是数据库密集型的。
问题
当进程运行时,top 输出显示此进程和 oninit(Informix) 的 cpu 使用率很高。 Cpu 负载始终高于 4,这是危险的。
这台机器只有1个CPU和2个虚拟cpu。
所有数据库查询都以committed read 隔离级别运行
分析
ps -eLo pid,ppid,lwp,nlwp,osz,rss,ruser,pcpu,stime,etime,args | grep <processname>
此输出显示线程 3 和 4 的 CPU 使用率很高
onstat -g act -r 2
此输出显示线程 3 和 4 的查询频繁。
考虑到以上所有事实,有什么办法可以减少 oninit & process 的 cpu 使用率和 cpu 负载
【问题讨论】: