首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

关于 Tomcat 线程池的理解

这些配置选项里有个取名不当的参数 "maxIdleTime",以下是关于标准执行器和空闲线程的关闭你需要了解的一些事情。...maxIdleTime 实际上是 minIdleTime 由于 Java ThreadPoolExecutor 的 FIFO 行为,每个线程在可能被关闭之前会等待最少 "maxIdleTime" 时间来接受新的任务...除非你把你的 maxIdleTime 设置到 20 秒以内,否则线程池将会一直持有 40 个线程,即使你的并发量从未超过 1。...然而你也并不想把你的 maxIdleTime 设置的太小 - 这将导致你面临线程被关闭的太快的风险。...在上面那个再简单不过的例子中,初始负载为 40 之后一段时间的负载维持在 1,一个 LIFO 的线程池就能够在 maxIdleTime 阶段之后将大小合理地调整到 1。

46410

服务假死问题解决过程实记(二)——C3P0 数据库连接池配置引发的血案

刚刚释放了大量的数据库连接(数量计作 size),由于 minPoolSize 设置为 200,所以立即又会发起 size 个数据库连接,使数据库连接数量保持在 minPoolSize 个; 每 60s (maxIdleTime...) 重复 2~3 步骤; 所以现场的 Oracle 的监听日志也会固定每 60 秒 (maxIdleTime) 添加约 200 条,运行了一段时间后,就出现了 Oracle 监听日志过大(一般情况下指一个...所以,前面三月六日我发现的大量出现 1521 端口的 TIME_WAIT,就应该是 DAO 服务端检测到有 200 个空闲连接,便为这些连接向数据库发送关闭请求,然后这些连接在等待 maxIdleTime...其实这个没必要配置,maxIdleTime 已经配置了。...所以我之前发呆后忽然的断崖式内存释放,肯定就是因为这个原因…… 果然把 maxIdleTime, maxIdleTimeExcessConnections 都设置为 0,并发插入立即变得顺滑了很多。

2.1K10
领券