- 论坛徽章:
- 0
|
问题描述:
某个进程占用CPU达到120%,一般发生在运行一天后,进程处理数据量最高峰时期,进程处理数据为电话通话量数据,一天的早上,中午,下班时间为高峰。进程占CPU过高基本出现在早上8点左右。
1、硬件环境:
操作系统:Linux localhost.localdomain 2.6.18-53.el5xen #1 SMP Wed Oct 10 16:48:44 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
资源情况:(TOP命令显示)
top - 20:48:26 up 70 days, 22:00, 5 users, load average: 0.57, 0.68, 0.82
Tasks: 156 total, 3 running, 153 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.7%us, 2.9%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.3%hi, 2.5%si, 0.2%st
Mem: 16390144k total, 4312480k used, 12077664k free, 604720k buffers
Swap: 51199144k total, 0k used, 51199144k free, 1815696k cached
2、软件描述
程序用C++实现,分为主程序和子模块,子模块以动态库方法被主程序加载,主程序负责接收远程数据包(多个点)和发送远程数据包(多个点),主程序和子模块的交互为队列交互方式,子模块被加载起来后,单独以线程方式运行,主程序发送数据给子模块时把数据压入子模块队列,子模块需要外发数据时把数据压入相关队列,主程序负责发送。各队列加锁同步。基本排除了子模块自身处理速度不够的情况。
进程占用CPU过高后,导致自身来源数据队列堵塞,可达到1000万条数据堵塞。 |
|