大家平时是怎么做压力测试的?

2018-12-11 09:19:49 +08:00
 yestodayHadRain

上周项目在线上使用的时候发生了个问题,一两秒内 300 个并发时服务器就死掉了,tomcat 没有崩溃但是就是请求没有响应不知道为什么?昨天用 jmeter 尝试复现,由于之前没有 jmeter 做过压力测试用,不知道是不是配置的不对,500 个并发服务都没有事情,最后和同事对接了下才发现压错了接口,崩溃的接口对数据库读写比较多所以死掉了,后来去压那个接口发现果然抗住不,看了下数据库连接池发现竟然是 c3p0,后来果断改成了 druid 然后就没事了.

关于这件事让我产生了一个疑问,做压力测试时如何根据测试的情况来推断出服务器在线上能抗住多少的并发呢?

4272 次点击
所在节点    问与答
25 条回复
yestodayHadRain
2018-12-11 09:21:31 +08:00
补充一下,项目是传统项目平时用户量比较少只有特殊的情况下才会有几百年的并发,另外线上使用的时候是直接部署在 win 上面的,虽然我也想部署在 linux 上但是公司是这样要求的,最后的最后 代码不是我写的......
cst4you
2018-12-11 09:22:46 +08:00
发连接 /IP 到 V2EX / Hostloc
hflyf123
2018-12-11 09:23:33 +08:00
压力测试目的是在软件投入使用以前或软件负载达到极限以前,通过执行可重复的负载测试,了解系统可靠性、性能瓶颈等,以提高软件系统的可靠性、稳定性,减少系统的宕机时间和因此带来的损失(压到崩为止)
SoulSleep
2018-12-11 09:27:26 +08:00
看了下数据库连接池发现竟然是 c3p0,后来果断改成了 druid 然后就没事了.

替 c3p0 伸冤,这锅我不背,是你不会用
然后 druid 也有 bug 1.0.10 版本之前,不告诉你,等你踩坑。。。昂~
yestodayHadRain
2018-12-11 09:33:51 +08:00
@SoulSleep 那麻烦大佬告诉我下 c3p0 的正确使用姿势 还有 druid 的 bug
yestodayHadRain
2018-12-11 09:34:34 +08:00
@SoulSleep 这个坑踩的成本太高了,万一以后线上在出问题了,就是我的锅了,会影响好多人的
SoulSleep
2018-12-11 09:39:43 +08:00
@yestodayHadRain #6 你用最新版本就行了,已经修复了,我们就被坑过,即使我们的数据库做了高可用,但是这个 bug 会导致 druid 的连接异常
lingll
2018-12-11 09:41:53 +08:00
开发兼做测试? 没有专门的测试人员吗?
luosuosile
2018-12-11 09:49:37 +08:00
好文收藏
loveCoding
2018-12-11 09:51:51 +08:00
那你从 c3p0 换成 druid 连接池参数变化了什么? 还是没有找到导致崩溃的原因啊
tt67wq
2018-12-11 10:21:33 +08:00
站在电脑上测试,给它一点压力
yestodayHadRain
2018-12-11 11:37:12 +08:00
@lingll 公司没有测试,因为我之前做测试的老大就让我搞了,可是我之前没搞过压力测试
yestodayHadRain
2018-12-11 11:39:16 +08:00
@loveCoding 老大说那天用的时候 tomcat 并没有崩溃,只是卡住了所有请求都是 loading,所以我认为是之前的数据库连接池性能不够好前面的资源还没释放后面排队的就来了,就这样一直堆积最后阻塞了。当然这只是我的猜测,我是个小白
yestodayHadRain
2018-12-11 11:42:41 +08:00
@SoulSleep 我今天又去压昨天的那个接口,发现有系统异常大致意思是线程池达到了最大,但是把 jmeter 关掉就能正常访问了(用 c3p0 的时候关掉了 jmeter 访问也是一直 loading),能不能分享下你们的 druid 参数设置呢?初始化,最多,最少 只要这三个就成
saltxy
2018-12-11 14:31:30 +08:00
直接压线上的接口吗?不应该是压测试环境的接口,然后估算线上可承受的压力吗。
不知道大厂是怎么做的
yestodayHadRain
2018-12-11 17:17:18 +08:00
@saltxy 是在测试环境压的接口,但是用 jmeter 模拟出来的线程和线上真实用户操作还是有区别的,另外我在线下用 jmeter 做压力测试,单机版 tomcat 部署在 win 上面,2000 个线程并发 服务都没事,这样讲就能说 线上单机版 tomcat 能抗住 2000 的并发吗?这样肯定是不合理的
sagaxu
2018-12-11 17:24:39 +08:00
推荐 hikariCP,阿里的开源项目,我是不敢用的。还有那个 fastjson,并不 fast,坑还很多,阿里自己一些项目也不用它。
yestodayHadRain
2018-12-11 18:47:43 +08:00
@sagaxu 大家好像有些跑题了,title 是关于大家平时是如何做压力测试的,说着说着变成连接池讨论了
linil
2018-12-11 22:00:13 +08:00
我们以前是布了一套和生产差不多的环境。
另外分布式的情况是测试一台的能力,然后后面不够了就加服务器布置多一个节点,当然前提是确保入口抗得住(如用 Nginx 的话就先测 Nginx 的能力)
yestodayHadRain
2018-12-12 08:59:08 +08:00
@linil 你们做压测的时候是用什么来做的呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/516345

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX