首页 > 其他分享 >对线程池设置做压测

对线程池设置做压测

时间:2023-09-30 16:32:57浏览次数:47  
标签:压测 private int 线程 设置 executor


线程池代码

@Configuration
public class ThreadPoolConfig
{
    // 核心线程池大小
    private int corePoolSize = 24;

    // 最大可创建的线程数
    private int maxPoolSize = 25;

    // 队列最大长度
    private int queueCapacity = 100;

    // 线程池维护线程所允许的空闲时间
    private int keepAliveSeconds = 300;

    @Bean(name = "stockThreadPool")
    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
    {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setMaxPoolSize(maxPoolSize);
        executor.setCorePoolSize(corePoolSize);
        executor.setQueueCapacity(queueCapacity);
        executor.setKeepAliveSeconds(keepAliveSeconds);
        executor.setThreadGroupName("JM");
        executor.setThreadNamePrefix("stock-thread-");
        // 线程池对拒绝任务(无线程可用)的处理策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        return executor;
    }
}

错误设置

压测:5000个文件同时处理,设置100个线程

对线程池设置做压测_线程池


压测结果:出现很多超时TIMED_WAITING

原因:如果线程数设置太多,会一直开辟新线程,如果GC自动回收来不及,会出现很超时线程,最后会引起OOM

正确设置

压测:5000个文件同时处理,设置10个线程

对线程池设置做压测_线程池_02


压测:5000个文件同时处理,设置10个线程

压测结果:线程都正常运行RUNNABLE

线程池设置多少合适



标签:压测,private,int,线程,设置,executor
From: https://blog.51cto.com/u_15477378/7664538

相关文章

  • Qt之设置QLabel内容太长显示补全处理方法
    #include"mainwindow.h"#include"ui_mainwindow.h"#include<QFontMetrics>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);QStringnewStr=ui->label->text();Q......
  • C++11 多线程< 一>、介绍
    1#include<iostream>2#include<thread>34voidfun1()5{6std::cout<<"fuck"<<std::endl;7}89intmain()//主线程10{11std::threadt1(fun1);//t1线程12//t1.join();//主线程和t1互不干扰,......
  • 21.获得和设置表单的值
    获得和设置表单的值:先获取一个节点,然后用value来获取表单的值节点的名字.value对于单选,多选框,无法获取已经选中的值,但是可以通过checked来判断该选项是否被选中还可以通过checked=‘true/false’来改变单选或多选框的值......
  • 对于学习Linux进程与线程的感悟
    进程感觉就像一个应用程序一样,比如QQ,火狐浏览器等等,他们之间互不干扰,可以独立运行。线程就像QQ里的各种功能,比如好友列表,显示当前是在线还是离线,会话窗口等等去实现各种功能,进程死掉的话,这些线程也会跟着结束。经过一段时间的学习,发现线程方便好用,线程与线程之间通信非常......
  • 教程:群晖NAS使用教程:如何设置定期执行数据清理?
    当使用NAS频繁,也就意味着硬盘读写数据也越来越多,而如果遇到突然断电或其他不可预料的系统故障,可能就会遇到数据一致性问题,最终导致数据不可用。而频繁写入修改文件,也会导致碎片文件增多,而影响硬盘性能。那么,就可以定期给你的群晖NAS进行数据清理。数据清理数据清理可以对文件系......
  • 爬虫记录~(多线程爬取图片)
    使用Requests+Re库方法多线程爬取亚马逊商城商品图片,以关键词“书包”搜索页面的商品的图片,爬取0-2页面商品图片。关键词:多线程爬虫程序、商城网站的遍历,链接的查找和访问。巩固搜索接口和翻页处理。importrequestsfromfake_useragentimportUserAgentimportrefrommulti......
  • 面试必问:JS单线程与事件循环,看这篇就够了
    JavaScript是一种单线程语言,它在任何给定时间只能执行一个任务。然而js确能够处理异步操作,这得益于其事件循环(EventLoop)机制。今天这篇文章带领大家深入理解JavaScript单线程特性,以及讲解事件循环和js多线程知识。一、背景:为什么JS是单线程?在最开始设计中,JS的主要用途是处理浏......
  • esxi上使用esxcli命令设置:虚拟交换机、端口组、vlan、物理接口
    创建虚拟交换机esxclinetworkvswitchstandardadd--vswitch-name=vSwitch2创建端口组esxclinetworkvswitchstandardportgroupadd--portgroup-name=VLAN3999--vswitch-name=vSwitch2设置端口组vlan号esxclinetworkvswitchstandardportgroupset-pVLAN3999--vlan-......
  • 10分钟巩固多线程基础
    10分钟巩固多线程基础前言多线程是并发编程的基础,本篇文章就来聊聊多线程我们先聊聊概念,比如进程与线程,串行、并行与并发再去聊聊线程的状态、优先级、同步、通信、终止等知识进程与线程什么是进程?操作系统将资源分配给进程,使用进程进行调度,但进程遇到阻塞任务时,为了提升CP......
  • JVM系列三:JVM参数设置、分析
      JVM系列三:JVM参数设置、分析  不管是YGC还是FullGC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程......