谈谈JSF业务线程池的大小配置
来源 | OSCHINA 社区
作者 | 京东云开发者-京东物流 刘江波
原文链接:https://my.oschina.net/u/4090830/blog/10108824
1. 简介
“单服务应用” 指应用仅包含一个提供接口,且接口中仅有一个方法。 “复合服务应用” 则指应用包含多个提供接口或一个接口中含有多个方法。
2. 测试用例说明
注:我们对 USF3.0 权限系统进行了定制,调整了服务提供方的配置数据,仅保留了 com.jd.susf.service.api.SusfPermissionService。
3. 测试结果及分析
3.1.cached 线程池的系统负载
并发用户数 | TP99 | 吞吐量 TPS | CPU 利用率 (%) |
---|---|---|---|
1~23 | <8ms | 线性增长 | 线性增长 |
24 | 8ms | 6553 | 99.62 |
25 | 11ms | 6607 | 99.83 |
26~79 | 迅速增长 | 缓慢增长 | 99+ |
80 | 74ms | 6928 | 99.82 |
81~199 | 缓慢增加 | 缓慢下降 | 99.82 |
200 | 99ms | 6230 | 99.94 |
3.2 fixed 线程池 (队列) 的系统负载
JSF 业务线程数 | 可支持的最大并发用户数 | TP 值 (50/90/99/999) | 吞吐量 (TPS) | CPU 最大利用率(%) |
---|---|---|---|---|
4 | 11 | 7/8/10/18 | 1531 | 27.67 |
8 | 25 | 8/8/10/18 | 3113 | 46.45 |
16 | 50 | 8/8/10/21 | 6228 | 87.97 |
20 | 23 | 3/4/10/15 | 6409 | 99.92 |
24 | 22 | 3/4/7/15 | 6178 | 99.86 |
25 | 22 | 3/4/6/15 | 6182 | 98.83 |
3.3 fixed 线程池的系统负载
JSF 业务线程数 | 并发用户数 | TP99 | 吞吐量 (TPS) | CPU 最大利用率(%) |
---|---|---|---|---|
4 | 4 | 5 | 1063 | 20.26 |
8 | 8 | 5 | 2216 | 36.62 |
16 | 16 | 6 | 4262 | 68.56 |
20 | 20 | 5 | 5550 | 86.22 |
24 | 24 | 8 | 6711 | 99.62 |
25 | 25 | 16 | 6644 | 98.77 |
26 | 26 | 19 | 6744 | 99.93 |
4. 结论
JSF 线程池的默认配置在并发量高的场景下存在风险:所有线上生产环境中的 JSF 服务所在的服务器,很少有能够在 200 个线程的情况下还能够满足 SLA 的。最大 200 个线程的线程池配置,将服务器置于 “并发量高的场景下被压垮” 的风险中。线程池大小的合理配置应该来自高保真的负载测试。
足量的线程数才能保证资源 (CPU) 的利用率:业务型的服务通常都存在一定的 IO 操作(网络,磁盘等),线程执行过程中会发生等待,CPU 利用率不高,需要增加并发的线程数量,让更多的线程参与 CPU 的分配,才能提高 CPU 的利用率。服务中 IO 操作越多,等待时长越长,需要的并发线程就越多。对于有 IO 操作的业务型服务,负载测试的线程数可以从 2N(N 是服务器的 CPU 核数)开始。
过多的线程数只会降低系统的 SLA:当线程数已能 100% 利用 CPU 后,增加线程数,线程就无法获取足够的 CPU 分配,这样服务的响应时间就会增大。在一定范围内,TP99 还可能满足 SLA 的要求,系统的吞吐量也会有少量的增加。再持续增加线程数,TP99 就无法满足系统的要求,系统的吞吐量也会开始下降。
固定的线程数可以保护系统需要承担的负载能力:固定线程数可以保证系统对 CPU 的利用率限定在一定的负载范围内,保护系统稳定运行,保证响应时间 TP99,但也限定了系统的并发能力。合理设置队列大小可以增加系统的并发度,也不会影响系统 TP99,但会整体拉高服务的响应时间,出现不稳定性的变化,存在风险。
让 CPU100% 的高负载运行:通常服务对外的 SLA 承诺通常高于服务真实的性能,这是因为我们考虑了基础设施及依赖服务的不稳定性。因此,即使 CPU 已经达到了 100%,我们仍然可以增加一定数量的线程数,而不会影响对外的响应时间 TP99 的承诺。这样可以提高系统的并发能力。虽然系统可以在高负载下运行,但我们需要进一步进行稳定性测试,以提高系统的可靠性。
5. 附录
附录一:统计指标及术语说明
往期推荐
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦
微信扫码关注该文公众号作者