因为开发中很少接触性能问题,导致别人问了我一个问题。说他们项目是一个传统项目,突然有一天并发量(说是10000并发导致的。但是我不清楚这个数他是怎么来的。)上来了导致项目宕机问题。听完了后我以自身经验给出了一个答案就是首先需要知道宕机问题在于哪(一般这种问题可能都存在于数据库),如果是数据库就需要增加缓存,减轻数据库压力。回头自己想了想,没有实践的理论都是扯淡感觉。
然后自己简单的搭建了一个环境。()
1、 一个简单的spring boot 项目,里面一个查询接口finduser,这个接口就是查询返回固定999条数据
2、 配好了一个单机的mysql数据库。
3、然后用jmeter 设置10000并发数量去调用接口,测试是否会宕机。
第一次测试 报了无法获取数据库连接
然后去查看mysql最大连接数的设置为100
又查看了允许的最大用户连接为210
通过网上查找资料得知一个公式 为 用户连接数量 / 最大连接数 *100 = 85% 为最理想的设置
然后我们吧最大连接数设置成250-_-!
重新启动测试
结果还是报出了 上面的错误
然后又吧数据库连接调整到了300
结果通过了测试没有报出问题。
最开始如果不调整数据库连接 并发调用接口 每次返回99条数据,项目并是不会报错误。然后把接口的返回数量调整到每次返回999条,就会报出数据库连接的问题。所以综上所述就单接口调用测试这里,我们应该首先去想到优化sql(增加索引、分页)等优化方案进行优化,如果还不行的话(可以增加缓存),最后可以适当调整数据库连接数 只是个人测试研究,请大神勿喷。