本文简单介绍如何做支付服务器的性能测试,用什么方法,有什么流程,有什么注意点,用哪些用具等等。
01测试目的
在测试之前,首先要搞明白这次测试的目的和对象,不能一句模糊的”服务器性能是否满足要求”。这里有几个问题需要搞清楚:
a. 当前期望的微信支付交易笔数是多少(根据实际情况估算,一般来说不会超过商户大盘交易笔数的50%)?
b. 当前期望的并发交易量多大(微信支付交易量,企业付款,现金红包,代金券等)?
c. 当前服务器的硬件配置是怎么样的?几台服务器器,服务器的硬件配置是怎么样的?
d. 当前软件架构是怎么样的?每个服务器有几个进程?有几个线程?数据库有几台等。
02测试方法
一般来说,商户的支付服务器是如下这样的简单架构,虚线框里便是我们要测试的支付服务器,这里不讨论这里服务器是有几台物理机,有几个进程,有几个数据库,这里把他作为一个整体讨论。
在实际测试过程中,并不是用真实的交易数据,向微信支付服务器发送请求(所以也就不存在,没有足够多用户合法刷卡条码的问题)。性能测试的时候,应该把发给微信支付的消息,都发给一个“模拟微信支付服务器”的系统,如下图:
这个系统用于模拟微信支付服务器,实际的业务逻辑是,收到商户支付服务器发来的消息后,在延迟合理的时间(这里可以探讨,比如延迟500ms,如果模拟微信支付服务器是在另一台物理机上,那么和商户支付服务器之间的网络延迟也要考虑进去),根据微信支付的接口文档,回复合理的消息给商户支付服务器。
这里模拟微信支付服务器不仅可以回复成功的请求,也应该能模拟失败的情况。
03测试用例
性能测试的关键是,把性能测试需要测试的情况都列出来。常见的性能测试用例举例如下:
a. 1000人同时刷卡支付
b. 一分钟企业付款500笔
c. 微信支付同时有500笔订单报错
d. 同时有1000人领取代金券
e. 稳定性测试(例如持续并发测试24小时)
以上仅仅是举例子,实际情况,需要研发根据商户的支付情况,发现高峰值可能有性能问题的case,在性能测试中测试。
04数据和工具
在性能测试过程中需要收集相关的数据,以便后续继续分析。性能测试中,主要采集以下的数据:
进程的CPU占用率
内存占用
磁盘读写
函数热点信息
为了抓取这些数据,可以利用这些常见的工具:Vtune,Perf, valgrind, nmon等,有时候为了达到测试目的,研发还需要开发自己的测试配套工具和脚本,例如上图的“模拟微信支付服务器”模块,其实也算是测试工具的一部分。
05分析和定位问题
收集到性能数据以后,就需要分析问题。
比如CPU高,那么可以通过nmon或者perf抓到的热点函数,找到是哪几个函数特别占CPU。
找到对应函数以后,分析是为什么这个函数占用的CPU高? 是因为应该异步处理的事情没有适当处理?是因为这个函数的实现做的并不好?是因为这个函数被调用的次数太多(然而没必要)?CPU高的时候I/O是否高,磁盘读写是否多?
如果内存太高了,就要分析内存是稳定在这么高?还是持续上升到这么高?是因为有内存申请好没有释放?还是因为每次消息申请了太大的内存(其实没必要)?
06自动化性能测试
当上面的这些步骤,做几次测试熟练以后,那就可以把整个流程自动化了。
自动化性能测试需要你用脚本语言把整个流程自动化,包括运行性能测试,监控性能测试,自动收集数据,生成性能测试数据图表等等。
一个脚本,一个命令,一个回车,就可以把性能测试自动跑一遍。喝完一杯咖啡之后,一份格式化的性能测试报告,应该自动发送到你的邮箱(纯属YY,毕竟自动跑的时候,作为程序员还要写其他代码)。
以上是个人对支付服务器性能测试的看法,欢迎探讨。最后IOS用户别忘记你们另类的打赏方式,2333333。
本文仅代表个人观点。
展开全文
- 移动支付网 | 2022/6/7 14:30:46
- 移动支付网 | 2021/9/14 10:26:36
- 移动支付网 | 2021/8/11 9:01:01
- 移动支付网 | 2021/8/6 11:19:11
- 移动支付网 | 2021/7/23 15:54:05
- 移动支付网 | 2021/7/5 16:17:37
- 移动支付网 | 2021/6/29 17:54:18
- 移动支付网 | 2021/6/29 15:23:55
- 金融电子化 | 2020/11/30 10:21:52
- 探长读财 | 2019/12/11 9:21:53
- 移动支付网 | 2018/10/11 19:21:48
- 移动支付网 | 2018/7/30 9:33:16
- 移动支付网 | 2017/10/13 8:55:20
- 中国新闻网 | 2017/9/12 17:50:13
- 手机中国 | 2016/9/28 8:51:33