jmeter 压测最近的心得体会
笔者14年入坑测试,截止到17年年初一直在游戏公司,压测,我都没有怎么用过,特别是jmeter去压测,自己学习,可是先找到切入点,于是乎,
其实也算是我学习后,先找一个更大的平台吧,我聊了几个游戏公司,哎,没面上,可能是我也相不中,我换了现在的公司,教育公司。算是转行了,做在线教育公司的产品,
一开始我也是点点,每天面对不了的需求,期间也经历了部门的较大的人员离职,新领导就位,就到这个新老领导交替后,运行一段时间后,我们的产品可以说开始出来各种异常了,
其实我们一开始是认为功能的报错,或者服务器的错误,我们老大说让我盯着,我就和开发解决,一周左右吧,一直有,但是前期都紧急处理了,可是有一天,两个部门在外面分享我们成功呢,宣传呢应该,出问题了,用户也打电话反馈,CEO都开始关注了,我们紧急处理,紧急进行部分设备优化升级,部门老大紧急召开安全会议,让我们一定确保,可是加上开发几个不太熟悉系统吧,我们就排除错误,加上可能有服务器的问题,升级后,还是会出现,这可是我们要去解决的问题啊。
可是我们遇到了第一个难题,怎么去复现的问题,因为研发看日志,有几个 ,他也没有看到那个,这时候呢我说要不就模拟用户大量访问吧,这个时候运维说,看我可以搞吗,我就想到了我学过的的jmeter 我就说可以的,这样我们去复现问题,立马我就去找软件下载,可是问题来了,脚本,我没有脚本,其实研发那边没有文档一开始 ,没有给到我,我也不能一直卡在哪里,我能怎么办,短时间想办法解决问题,录制呗,简单粗暴,接着我就录制了登录的接口,有人会说你怎么都不录制,我也想,可是我现在要处理的就是登录时候的错误啊,我们只能先去紧急处理这个问题,我录制好脚本,就可以和运维来搞这个问题,我开始压测,我们先在测试环境去调试和测试, 可是我们没有复现出来这个问题,怎么办,但是我们发现了其他的问题,可是这个还不是我们想要的,但是我们公司有两套测试系统,我们想着用另一套去测试,但是虽然有问题,但是不是我们想要的,那么怎么办,没法,我们还是要做的,于是我就开始加压力,于是乎,我们复现了那个问题,但是我们也找到了一些其他的问题,我们怎么办呢,一就开始去和研发去定位的问题,排除了数据库的问题,我们数据库一直没有压力,看到有压力的就是我们的缓存服务器,
我们在想缓存服务器有问题,于是我们就来解决这个,可是这个时候我遇到了另外一个问题,我的电脑到700并发就开始异常了,windows的报错,那时候已经晚上了,加班的同事还很多,于是我就紧急的去培训了另外一个测试,也找了开发去配合,没法,时间紧迫,必须解决,我们只能这么几个人,1,2,3 点,一起看,这是最简单最有效的可以大规模并发的,我们找到了问题,就是在缓存上,紧急修改了这个错误,但是其实一个更大的坑,我们埋下来了,其实是因为当时处理问题的对系统的熟悉度不是特别高, 我们当晚在加班的时候,线上再次爆发,再次爆发,再次爆发,这是大事了, 我们都在加班,部门老大死命令,不解决这个问题我们今晚不收兵, 怎么办。解决,开始压测线上单台机器,那是凌晨,没法 我们必须这么做,只有这个点用户量小。 条件有限,我们必须去做,
这个时候来个小插曲,停电了园区,我们耽误了一段时间,后来我们在几个人用喊1,2,3一起点,我们解决了展示的问题,但是后来我们多加一个接口,新问题来了,尼玛,旧的临时能这么解决,新的就来了,我们的sql需要优化,300并发单台就能干死,怎么办,mql爆了,但是临时处理可以,第二天,没睡醒就去了公司,没法 压测,优化,我们这个时候呢,懂系统的来了,优化后sql快了,我们有开始去压测,去调试,突然有发现问题,我们昨天的处理会影响其他支付的相关功能,我擦,我们又紧急处理,我们两个接口 1500的并发,当天测试就完了,我们老大这个时候组织我们开了第二次的会议,明确接下来要搞的这个就是性能,保证线上啊,我们集体讨论,优化部分功能,调优啊,缓存那个调整后,接下来遇到了一个问题,怎么保证在现有的基础上保证我们的集群能够最大承受,我们开始调整链接池,去优化,单个机器晚上能够到2000并发,可是突然之间,我们遇到新问题,集群1500报错,接下来又是一场硬仗,分布调试就是不行,我们初步看看是否是负载均衡的地方有什么,可是用的第三方的云服务器,只能天亮解决了。
经过最近的加班来去优化,我发现其实很多问题一开始就可以避免到以后出现的大规模爆发问题:
1.程序进行合理化设计开发,功能开发前进行充分讨论设计,有个好的dba,有个好的架构
2.产品在给需求等,要开会听取研发等反馈,是否会产生新的问题
3.测试在测试中应该尽早去提出做性能,做压力,系统应该早点去发现。
4.就是线上出来了,那么紧急做,其实没办法,客官原因,这个时候,不要着急,先抓重点,及时开会,及时碰头,群里群策,
性能不是后来就对一个系统的考验,而是从一开始你设计这个系统的时候就要考虑到的。
可是有时候我们面临这很多问题,我们要做的,就是去弥补之前丢失的性能测试的工作,那么这个时候等待我们测试的就是大量的工作,批量的加班,没办法,保证线上,保证大量用户的系统的平稳运行,这个时候整体就要抽出来我们的一半的人员去为性能去优化。
性能不能不做,性能一定要做,不要等用户上来了才做性能,要从根上就要开始注意性能。牢固的地基才是建筑永远树立。
后续会继续吧我的经历分享给大家。
个人公众号