如何用java去实现压测不同的qps值,以及提高qps值?
问题描述
如何用java去实现压测不同的qps值,多线程+for-loop的方式控制不了发送请求的时间吧?以及有哪些措施提高qps值?
背景信息
开发一个http server项目,并在里面实现一个高延迟API。 该API要求如下:
- 输入:圆的半径(浮点数)
- 输出:圆的面积(浮点数)
- API延迟要求:模拟业务处理耗时50-100ms
- 当输出结果正确且延迟在此范围内时,才算成功。
- 延迟大于100ms则视为超时,算失败。
使用java写一个http客户端程序,用来调用http api,同时具备功能验证和性能压测需求。
- 功能验证:随机生成1万个数字,调用api,验证功能正确性
- 串行调用api,用txt文本输出每个请求的输入,输出,延迟,并标出结果有错误的case,计算出成功率
- 性能压测:客户端可以采用多线程+for-loop方式来压测api的性能。
- 统计不同压测qps值(100,1000,10000,...)时,统计api返回成功率(成功率=成功返回请求数/总请求数 * 100%)
- 检验当可用性>99.9%时,api支持的最高qps是多少?
- 性能优化:
- 本题目中,影响压测qps上限的因素是哪些?有哪些解决方法?
- 通过一定的优化措施,来不断提升最高qps上限。
具体疑问
主要卡在了如何用java去实现压测不同的qps值,尝试了多线程+for-loop的方式,但是无法保证发送的总时间,以及api返回成功率中,成功返回请求数是指不超过100ms的返回,还是其他意思?
已有理解
目前查阅资料知道qps值可以通过设置线程池、配置tomcat、消息队列等提高
预期目标
希望得到一个用java去实现压测不同的qps的示例,以及具体的提高qps的方法?
相关资料
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
