JVM最大线程数修改
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怎么调整线程最大数,有经验的朋友请分享下呀。
如果大家有开发过此类型的项目,请分享一下你的解决方案呀。
感谢,感谢,万分感谢!!!
...全文


Java SE
