现在应用场景如下:
一个 B/S 系统,用户提交请求到服务端( Linux, websphere, jdk1.4 )后,服务器开始进行计算处理,计算处理过程使用多线程实现。服务器使用的是多核 CPU ( 4 核),但是在实际测试中发现,尽管线程数已经调到很高(大于 40 个线程),但是仅仅只有 1 个 CPU 核被使用,使用率为 60%,其他 CPU 核的使用率均为 0%。
请问,如何做才能让多线程完全跑满 4 个 CPU 核??
还望大家不吝赐教,感激不尽!
现在应用场景如下:
一个 B/S 系统,用户提交请求到服务端( Linux, websphere, jdk1.4 )后,服务器开始进行计算处理,计算处理过程使用多线程实现。服务器使用的是多核 CPU ( 4 核),但是在实际测试中发现,尽管线程数已经调到很高(大于 40 个线程),但是仅仅只有 1 个 CPU 核被使用,使用率为 60%,其他 CPU 核的使用率均为 0%。
请问,如何做才能让多线程完全跑满 4 个 CPU 核??
还望大家不吝赐教,感激不尽!
|
snail1988Aug 17, 2017
1
什么语言写的服务?如果是 Python 之类的,因为 GIL 的存在,多线程并不能并行,也只能利用一个核心
|
|
wwqgtxxAug 17, 2017 via iPhone
4
估计是什么地方上了个全局锁吧
|
|
kanegAug 17, 2017 via iPhone
5
十几年前的 jdk1.4, 那个时候还没有多核的概念,所以 jvm 估计不能把多线程分配到多核。
|
|
wekwAug 17, 2017 via Android
6
1.4 好古老呀…
|
|
wayslogAug 17, 2017
7
1.4.。。。。
|
|
ixiaoheiAug 17, 2017
8
先升级 jdk 试试吧
|
|
zhuyieAug 17, 2017
9
查查是否设置了 CPU 亲和性,将进程绑到某一个 CPU 核上了。
|
|
dbowAug 17, 2017
10
|
|
11
好的,谢谢各位,我先升级一下 jdk 版本,再试试!
|