现在应用场景如下:
一个 B/S 系统,用户提交请求到服务端( Linux, websphere, jdk1.4 )后,服务器开始进行计算处理,计算处理过程使用多线程实现。服务器使用的是多核 CPU ( 4 核),但是在实际测试中发现,尽管线程数已经调到很高(大于 40 个线程),但是仅仅只有 1 个 CPU 核被使用,使用率为 60%,其他 CPU 核的使用率均为 0%。
请问,如何做才能让多线程完全跑满 4 个 CPU 核??
还望大家不吝赐教,感激不尽!
什么语言写的服务?如果是 Python 之类的,因为 GIL 的存在,多线程并不能并行,也只能利用一个核心
楼主都说了 JDK,Websphere ……
sorry 没看仔细,websphere 没用过,不了解了
上面的回答请楼主忽略
估计是什么地方上了个全局锁吧
十几年前的 jdk1.4, 那个时候还没有多核的概念,所以 jvm 估计不能把多线程分配到多核。
1.4 好古老呀…
1.4.。。。。
先升级 jdk 试试吧
查查是否设置了 CPU 亲和性,将进程绑到某一个 CPU 核上了。
https://stackoverflow.com/questions/13392379/how-to-set-a-java-threads-cpu-core-affinity
好的,谢谢各位,我先升级一下 jdk 版本,再试试!