编程一生 2025-07-17 07:15 广东
实验结果告诉你!
一、问题背景
目前应用连接DB的连接数没有一个统一标准。目前既有应用的连接数设置普遍偏大,每个长连接都会产生开销,对DB服务器造成压力。随着服务的扩容和拆分,数据库服务端的压力会增大,有影响系统稳定性的风险。需要对数据库连接数建立标准,消除隐患。
二、结论
🔍 文章指出当前应用数据库连接数设置普遍偏大,每个长连接产生开销,对DB服务器造成压力,存在影响系统稳定性的风险,需建立统一标准。
📊 通过单接口和链路压测实验,证明单机数据库连接数在10个及以下时,性能没有明显变坏,吞吐量反而有提升,验证了设置连接数10以内的合理性。
🧮 文章从理论上分析了数据库连接数与并发度的关系,结合CPU核数和数据库操作类型,提出CPU密集型建议设置为CPU核数+1,IO密集型根据公式计算,结合生产服务器配置,理论支持连接数设置在10以内。
📈 文章强调性能优化采用科学法框架,结合理论分析和实际压测,得出连接数过大对性能有反作用的结论,并建议新应用默认设置为10,后续根据压测情况调整。
💡 文章总结指出,连接数设置过大会对性能产生负面影响,这一结论早有实验证明,文章提供的理论分析和压测数据为数据库连接数优化提供了科学依据。
编程一生 2025-07-17 07:15 广东
实验结果告诉你!
压测结论
执行完2万个并发的时间,100个线程(连接数)用了39秒,10个线程(连接数)用了35秒。具体数据
场景一2024-04-25T23:23:53.481Z开启100个线程执行2万个并发,执行结束时间为:2024-04-25 23:24:32.003场景二2024-04-25T23:28:00.172Z重启service后,开启10个线程执行2万个并发,执行结束时间为:2024-04-25 23:28:35.4302)链路压测压测结论
单机数据库连接数在10及以下,性能没有明显的变坏。从吞吐量上反而有提升。具体数据
之前线上压测过8000TPS,应用侧扩容服务器单个应用扩容到40~50台之间。基本可判定单机应用的TPS极限在200~350之间。所以压测上限也设定在此范围。场景一70个线程 ,最大线程数300,assert-app单机连接数达到100个(受限于容器线程数)。基本都在sleep状态(没有利用起来),吞吐稳定在238/s左右。场景二70个线程 ,最大线程数10,assert-app单机连接数达到10个。也基本都在sleep状态,吞吐稳定在288/s左右。场景三70个线程 ,最大线程数5,assert-app单机连接数达到5个。也基本都在sleep状态,吞吐稳定在329/s左右。AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。
鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑