线程池七大核心参数

线程池七大核心参数,第1张

线程池七大核心参数如下所示:

一、corePoolSize 线程池核心线程大小

线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会被销毁,除非设置了allowCoreThreadTimeOut。这里的最小线程数量即是corePoolSize。任务提交到线程池后,首先会检查当前线程数是否达到了corePoolSize,如果没有达到的话,则会创建一个新线程来处理这个任务。

二、maximumPoolSize 线程池最大线程数量

当前线程数达到corePoolSize后,如果继续有任务被提交到线程池,会将任务缓存到工作队列(后面会介绍)中。如果队列也已满,则会去创建一个新线程来出来这个处理。线程池不会无限制的去创建新线程,它会有一个最大线程数量的限制,这个数量即由maximunPoolSize指定。

三、keepAliveTime 空闲线程存活时间

一个线程如果处于空闲状态,并且当前的线程数量大于corePoolSize,那么在指定时间后,这个空闲线程会被销毁,这里的指定时间由keepAliveTime来设定。

四、unit 空闲线程存活时间单位

空闲线程存活时间单位是keepAliveTime的计量单位。

五、workQueue 工作队列

新任务被提交后,会先进入到此工作队列中,任务调度时再从队列中取出任务。

六、threadFactory 线程工厂

创建一个新线程时使用的工厂,可以用来设定线程名、是否为daemon线程等等。

七、handler 拒绝策略

当工作队列中的任务已到达最大限制,并且线程池中的线程数量也达到最大限制,这时如果有新任务提交进来,该如何处理呢。这里的拒绝策略,就是解决这个问题的。

线程池的优势

1、线程和任务分离,提升线程重用性;

2、控制线程并发数量,降低服务器压力,统一管理所有线程;

3、提升系统响应速度,假如创建线程用的时间为T1,执行任务用的时间为T2,销毁线程用的时间为T3,那么使用线程池就免去了T1和T3的时间。

英特尔的处理器型号。
du38是英特尔至强铂金处理器系列的产品,属于服务器级别的处理器。它采用的是LGA4189封装,支持的最大物理核心数为38核心,最大的线程数为76线程。
dv37是英特尔酷睿i7处理器系列的产品,属于台式机级别的处理器。它采用的是LGA1200封装,支持的最大物理核心数为8核心,最大的线程数为16线程。

java性能优化原则:代码运算性能 内存回收 应用配置(影响java程序注意原因是垃圾回收)

代码层优化:避免过多的循环嵌套 调用和复杂逻辑

Tomcat调优主要内容

1增加最大连接数

2调整工作模式

3启用gzip压缩

4调整JVM内存大小

5作为web服务器时 与Apache整合或Nginx

6合理选择垃圾回收算法

7尽量使用较新版的JDK

生产环境实例

<connector p=""

maxThreads="1000"

minSpareThreads="100"

maxSpareThreads="200"

acceptCount="900"

disableUploadTimeout="true"

connectionTimeout="20000"

URIEncoding="UTF-8"

enableLookups="false"

redirectPort="8443"

compression="on"

compressionMinSize="1024"

compressableMimeType="text/html,text/xml,text/css,text/javascript"/>

参数说明:

orgapachecoyote>TOMCAT性能调优后可以稳定支持的最大并发用户数量在300人服务器配置:

100MB网络(同一交换机)上,排除网络问题的影响服务器运行始终,
CPU使用率非常低没有超过5%
因此虽然服务器配置低,但是不是性能瓶颈所在服务器运行

在windows server 2003 sp2中文版(正版系统)
tomcat内存的设置:14GBJVM+256MB的池
set JAVA_HOME=C:\JAVA\JDK15
set CATALINA_OPTS=-server -Xms1400m -Xmx1400m -XX:PermSize=256m -XX:MaxPermSize=256mtomcat

线程的设置:初始产生1000线程数最大支持2000线程

类似于静态页面,以此来判断tomcat支持的最大的并发用户数量使用loadrunner设置1000并发用户数进行压力测试。

每两秒钟增加一个用户,以此递增,直至1000后,然后再按照两秒钟一个用户递减直至用户数位0

测试结果:

Transaction Response Time Under Load1可以看到在达到600用户同时在线的时候,系统响应时间为6秒钟

100人-----响应时间08秒 完美150人-----响应时间1秒 完美
200人-----响应时间15秒 响应时间有微小波动 比较完美
250人-----响应时间18秒 比较完美(此时是理想情况下最大的并发用户数量)
280人-----开始出现连接丢失问题,连接开始不稳定
300人-----响应时间3秒 响应时间有较大波动峰值为6秒 较差
350人-----响应时间3秒 开始大量出现连接丢失问题 连接很不稳定
400人-----响应时间38秒 连接丢失数量达到3000次以上
450人-----响应时间4秒 连接丢失数量达到6000次以上
500人-----响应时间4秒 连接丢失数量达到11000次以上
550人-----响应时间6秒 连接丢失数量达到21000次以上
600人-----响应时间6秒 连接丢失数量达到25000次以上

600人开始系统出现异常情况,因此停止测试。测试数据到此为止。每秒的点击次数:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12616866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存