java - CPU飆升的原因
問題描述
我在通訊底層使用了一個epoll模型,然后epoll在處理請求時會將請求交給一個線程池去處理,線程池中的線程則是調(diào)用上層服務,上層服務因為涉及到網(wǎng)絡(luò)通訊,所以大致處理一個請求不到10ms
就這樣一個模型在流量增大時會導致CPU急劇飆升嗎?
背景:我的CPU使用率大概在75%左右(流量:20~22Mbps);當流量增大到25Mbps的時候,CPU直接打滿了。。這個不是很符合預期,因為流量增加不到15%,但是CPU飆升25%。
問題解答
回答1:簡單說下我的觀點,僅供你參考哈:1:先考慮你的請求是IO密集還是CPU密集?我說的IO密集是指需要read和write收發(fā)消息的網(wǎng)絡(luò)IO,也就是通信;CPU密集例如需要經(jīng)過運算才能出結(jié)果,且時間較長。2:如果是第一種IO密集型的,那我覺得你沒必要把所有的請求都交給線程池去處理。如果沒有讀寫文件等磁盤IO耗時的操作,甚至都不一定使用線程池。這種方式下 One loop per thread模型無疑是最高效的了,說白了就是在單個EPOLL中完成所有的讀寫(網(wǎng)絡(luò)數(shù)據(jù)的讀寫,而不是讀文件)和定時事件。3:如果是CPU密集型的,那用thread_pool沒有問題,就看你的配置的線程數(shù)和代碼有沒有問題了。
這個問題沒有實際環(huán)境也不好回答,我全當拋磚引玉,不對的地方望指出。
相關(guān)文章:
1. PC 手機兼容的 編輯器2. html5和Flash對抗是什么情況?3. php如何獲取訪問者路由器的mac地址4. javascript - 在 vue里面用import引入js文件,結(jié)果為undefined5. python沒入門,請教一個問題6. 小程序怎么加外鏈,語句怎么寫!求救新手,開文檔沒發(fā)現(xiàn)7. git - 使用淘寶npm安裝hexo出現(xiàn)問題?8. javascript - vue-resource中如何設(shè)置全局的timeout?9. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙10. 多選框?qū)戇M數(shù)據(jù)庫怎么寫
