JVM最大线程数修改

fainfy fainfy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

import java.util.ArrayList;
import java.util.List;

/**
*
*/

/**
* @author Louie
*
*/
public class TestMaxThread {

public static void main(String[] args) {

List<Thread> ths = new ArrayList<Thread>();

int maxThread = 500000;
if (args.length > 0) {
maxThread = Integer.valueOf(args[0]);
}

for (int i = 0; i < maxThread; i++) {
Thread t = new TestThread();
String name = "Thread-" + i;
t.setName(name);
t.start();
ths.add(t);
System.out.println(name);
}

}

private static class TestThread extends Thread {
/*
* (non-Javadoc)
*
* @see java.lang.Thread#run()
*/
@Override
public void run() {

while (true) {
try {
Thread.sleep(1000 * 60);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

}


目前在做一个TCP即时通讯工具。上面这段简单的测试就是测试一下服务器(服务器为:SUSE 10 x64)支持最大的线程数。
目前要求是一块单板要10万用户同时在线,平均1个用户至少有2个线程会持续运行,平均一块网卡要保持5万的连接数。

--------------------------------------------------------------------------------------------------------------
上面测试的数据如下:
启动参数:java -server -Xss128k
线程数:21592

启动参数:java -server -Xss64k
线程数:32200

启动参数:java -server -Xmx3g -Xss64k
线程数:12006

java -server -Xmx2g -Xss64k
线程数:20112

java -server -Xmx1g -Xss64k
线程数:32186

启动参数:java -server -Xmx512m -Xss64k
线程数:32202

启动参数:java -server -Xms3g -Xss64k
线程数:12008

--------------------------------------------------------------------------------------------------------------
目前测试SUSE10服务器,每个线程平均64k最大线程数大概在3.2万左右。但是实际情况每个线程最少设置128k,上面的测试大概在2.1万的线程数。

按10万个用户同时在线,平均每个用户2个线程。那么这块单板最少要支持20万线程同时运行。
请问JVM怎么调整线程最大数,SUSE Linux怎么调整线程最大数,有经验的朋友请分享下呀。

如果大家有开发过此类型的项目,请分享一下你的解决方案呀。
感谢,感谢,万分感谢!!!
...全文
评论 13
收藏 已收藏
分享
返回顶部
fainfy
Java SE 62,620 成员 307,251 内容