-
JVM 调整最大线程数0
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怎么调整线程最大数,有经验的朋友请分享下呀。
如果大家有开发过此类型的项目,请分享一下你的解决方案呀。
感谢,感谢,万分感谢!!!2012年6月08日 15:17
目前还没有答案
相关推荐
通过调整这些参数,可以影响jvm支持的最大线程数。 2. 影响jvm支持最大线程数的因素 影响jvm支持最大线程数的因素有以下几个: * -Xms和-Xmx参数:这两个参数分别控制Java堆的初始大小和最大大小,增大这两个参数...
合理设定最大线程数(-XX:MaxThreads)和最小线程数(-XX:InitialThreadCount),可以确保系统资源的高效利用。 2. **请求队列长度**:当线程池满时,新的请求会被放入队列等待。设置适当的队列长度可以防止拒绝服务。 ...
在本文中,我们将讨论针对 WAS 6.1 的性能调优策略,涉及到线程数、JVM、日志和数据库连接等方面的优化。 一、线程数优化 在 WAS 6.1 中,线程数的设置对性能的影响非常大。我们可以通过设置 Web Container 的最大...
理解核心线程数、最大线程数、线程存活时间等参数的意义。 8. **并发工具类**:如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)和 Phaser(阶段器)等,它们在多线程编程中提供了灵活...
本文将详细介绍通过调整Weblogic线程数、设置JDBC缓冲池以及修改`startWeblogic.cmd`文件来实现这一目标的方法。 #### 1. 设置Weblogic线程数 在Weblogic服务器中,线程数直接影响到服务器能够同时处理请求的能力...
建议设置为最大线程数的70%-80%,即 `maxThreads * 0.7-0.8`。 - **`maxConnections`**:最大连接数。建议设置为CPU核心数乘以10再乘以200,即 `maxThreads * 200`。 - **`acceptCount`**:指定当所有可以使用的...
`maxThreads`参数定义了服务器可以同时处理的最大线程数,即并发请求的最大数目。`acceptCount`参数则表示当达到`maxThreads`时,服务器还能接受并放入队列等待处理的连接数。适当调整这两个参数可以有效缓解服务器...
Eclipse通过调整JVM参数来控制JVM的行为,进而影响Eclipse自身的运行性能。合理的JVM参数配置可以显著提升Eclipse的启动速度和运行效率。 #### 三、关键JVM参数解析 - **-Xms128m**:设置JVM的初始堆内存大小为128...
- **`maxThreads`**:最大线程数,表示服务器可以同时处理的最大并发请求的数量。 - **`minSpareThreads`**:最小空闲线程数,即至少保持的未使用的线程数量。 - **`maxSpareThreads`**:最大空闲线程数,当活动线程...
3. **使用`ulimit`命令查看和调整限制**:`ulimit -a`可以显示所有资源限制,`ulimit -u`则用于查看或修改用户可创建的最大线程数。调整后,需要重启系统使新设置生效。 4. **注意性能优化**:线程数量并非越多越好...
可以使用 -XX:+UseParallelGC 选择垃圾收集器为并行收集器,并使用 -XX:ParallelGCThreads 配置并行收集器的线程数。 此外,还可以使用 -XX:MaxGCPauseMillis 设置每次年轻代垃圾回收的最长时间,如果无法满足此...
5. **线程调度与并发**:理解JVM如何调度线程,以及如何利用`-XX:PreBlockSpin`、`-XX:ThreadPriorityPolicy`等参数调整线程优先级和自旋策略,可以优化多线程环境下的性能。 6. **编译优化**:JVM的即时编译(JIT...
可以通过调整`maxThreads`(最大线程数)和`minSpareThreads`(最小空闲线程数)来平衡响应速度和资源利用率。 2. **上下文路径和部署**:优化应用的部署结构,减少不必要的模块,避免启动时加载过多的类。 3. **...
此外,JVM的线程配置参数如“-Xss”设置每个线程的栈大小,对多线程应用的性能有直接影响。而“-XX:ParallelGCThreads”和“-XX:ConcGCThreads”分别控制并行和并发垃圾收集的线程数量,调整这两个参数可以优化垃圾...
通过修改Connector配置来设定最大线程数(maxThreads)、最小空闲线程数(minSpareThreads)、线程预启动数量(prestartminSpareThreads)以及最大请求等待队列(maxQueueSize)。其中,maxThreads一般建议设置在500至1000...
JVM 的堆空间可以根据实际需求动态调整大小,从而更好地适应程序运行时的变化情况。 为了提高内存分配效率,JVM 通常会采用一些优化策略,如分代收集技术。分代收集基于这样一个观察:大多数对象很快就会变得不可达...
2. **栈内存(Stack)**:线程私有,用于存储局部变量、操作数栈、动态链接、方法出口等信息。每个线程创建时都会分配一个栈空间。 3. **方法区(Method Area)**:存储已被JVM加载的类型信息、常量、静态变量、即时...
3. **栈内存(Stack)**:每个线程都有一个独立的栈,用于存储局部变量表、操作数栈、动态链接和方法出口信息。 4. **程序计数器(Program Counter Register)**:记录当前线程正在执行的字节码指令地址。 5. **...
初始内存(`-Xms`)是JVM启动时分配的最小内存,而最大内存(`-Xmx`)则是JVM允许的最大内存使用量。合理设置这两个值有助于避免因内存不足导致的性能下降或系统崩溃。 垃圾回收机制是JVM自动清理不再使用的对象以...
- 如果线程请求的栈深度大于虚拟机所允许的最大深度,则抛出 `StackOverflowError`;如果虚拟机栈容量可以动态扩展,当扩展时无法申请到足够的内存会抛出 `OutOfMemoryError`。 #### 四、本地方法栈 本地方法栈与...