【spring cloud】并发测试问题
2024-10-21 05:09:25
一,问题
并发测试,对外接口测试50个并发的时候开发报错,报错信息类似如下:
{"status":"0500","message":"GiftExchangeOrderClient#queryExchangeGifts(String,String,String,String) could not be queued for execution and no fallback available.","data":null}
二,方案
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
strategy: THREAD
semaphore:
maxConcurrentRequests: ${HYSTRIX_COMMAND_MAXCONCURRENTREQUESTS:1000}
thread:
timeoutInMilliseconds: ${HYSTRIX_COMMAND_TIMEOUTINMILLISECONDS:30000}
threadpool:
default:
## 并发执行的最大线程数,默认10
coreSize: ${HYSTRIX_THREADPOOL_CORESIZE:500}
## BlockingQueue的最大队列数
maxQueueSize: ${HYSTRIX_THREADPOOL_MAXQUEUESIZE:500}
## 即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
queueSizeRejectionThreshold: ${HYSTRIX_THREADPOOL_QUEUESIZEREJECTIONTHRESHOLD:300}
三,原理
1:hystrix的连接线程池限制
## 并发执行的最大线程数,默认10
coreSize: ${HYSTRIX_THREADPOOL_CORESIZE:500}
## BlockingQueue的最大队列数
maxQueueSize: ${HYSTRIX_THREADPOOL_MAXQUEUESIZE:500}
## 即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝
queueSizeRejectionThreshold: ${HYSTRIX_THREADPOOL_QUEUESIZEREJECTIONTHRESHOLD:300}
2:hystrix的超时设置
并发大的情况下,响应时间会很长,hystrix的默认超时时间是3秒内,故也会报接口错误问题
调整
timeoutInMilliseconds: 30000 除了hystrix的超时设置之外,还有ribbon超时设置 四,其他方案
1: 接口增加缓存
2: 接口调用优化,重复调用的接口考虑优化
最新文章
- ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
- DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时!
- Introduction - SNMP Tutorial
- 使用count结合nvl函数时碰到的问题
- linux实践之程序破解
- i.Windows下APR安装过程
- UIkit – 轻量级前端框架,帮助你快速构建 Web 界面
- Lua-泛型for循环 pairs和ipairs的区别
- Python 开发轻量级爬虫03
- HashedWheelTimer 原理
- CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2
- Excel取消保护密码
- 扩展Oracle表空间
- Ext.Net学习笔记06:Ext.Net DirectEvents用方补充
- LDAP-常用命令
- HDU 4970 Killing Monsters
- AES加密解密算法
- paperpass
- codeforces 1051 D. Bicolorings (DP)
- PhantomJSのメモいろいろ