文章详情页
java - CPU飙升的原因
浏览:103日期:2024-03-24 15:26:05
问题描述
我在通讯底层使用了一个epoll模型,然后epoll在处理请求时会将请求交给一个线程池去处理,线程池中的线程则是调用上层服务,上层服务因为涉及到网络通讯,所以大致处理一个请求不到10ms
就这样一个模型在流量增大时会导致CPU急剧飙升吗?
背景:我的CPU使用率大概在75%左右(流量:20~22Mbps);当流量增大到25Mbps的时候,CPU直接打满了。。这个不是很符合预期,因为流量增加不到15%,但是CPU飙升25%。
问题解答
回答1:简单说下我的观点,仅供你参考哈:1:先考虑你的请求是IO密集还是CPU密集?我说的IO密集是指需要read和write收发消息的网络IO,也就是通信;CPU密集例如需要经过运算才能出结果,且时间较长。2:如果是第一种IO密集型的,那我觉得你没必要把所有的请求都交给线程池去处理。如果没有读写文件等磁盘IO耗时的操作,甚至都不一定使用线程池。这种方式下 One loop per thread模型无疑是最高效的了,说白了就是在单个EPOLL中完成所有的读写(网络数据的读写,而不是读文件)和定时事件。3:如果是CPU密集型的,那用thread_pool没有问题,就看你的配置的线程数和代码有没有问题了。
这个问题没有实际环境也不好回答,我全当抛砖引玉,不对的地方望指出。
标签:
java
相关文章:
1. angular.js - 如何通俗易懂的解释“依赖注入”?2. angular.js - angularJs ngRoute怎么在路由传递空字符串及用ng-switch取得3. angular.js - 关于typescript的Object的属性的问题?4. android - 安卓开发webview无法运行<input type="file"怎么破?5. android - 安卓activity无法填充屏幕6. java - Cannot resolve symbol ‘HttpServletRequest’7. java - 直接访问webroot下的静态资源,为什么会报404?8. 多种方式登陆的的用户数据表设计9. USE关键字10. echo 后面如果不加任何引号,也可以显示文字信息,为什么必须要加单引号呢?有啥区别吗?
排行榜
![angular.js - 如何通俗易懂的解释“依赖注入”?](http://www.haobala.com/attached/image/news/202311/101247a4a4.png)