这两天对微服务网关进行压力测试发现各种问题,并都一一解决,总结记录一下。
问题
- SHORTCIRCUIT
- could not acquire a semaphore for execution and no fallback available
- timed-out and no fallback available
以上报错都可以通过调整zuul的参数进行解决。
解决方法
Hystrix隔离策略采用的SEMAPHORE
的方式,还有一个是THREAD
(一般对于公网服务使用)
具体可以了解一下zuul的两种隔离机制
1 2 3 4 5 6 7 8 9 10
| zuul: retryable: true add-host-header: true routes: generalservice: path: /g/** sensitiveHeaders: "Access-Control-Allow-Origin,Access-Control-Allow-Credentials,Access-Control-Expose-Headers,Vary" serviceId: xx semaphore: maxSemaphores: 5000 //设置相应的值
|
1 2 3 4 5 6 7 8 9 10 11 12
| ribbon: # ribbon重试超时时间 ConnectTimeout: 1000 # 建立连接后的超时时间 ReadTimeout: 5000 # 对所有操作请求都进行重试 OkToRetryOnAllOperations: true # 切换实例的重试次数 MaxAutoRetriesNextServer: 1 # 对当前实例的重试次数 MaxAutoRetries: 0 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 13000 // > (ConnectTimeout + ReadTimeout) * MaxAutoRetriesNextServer
|
问题
- Method queryTotal execution error
解决方法
这个问题解决方法见https://github.com/baomidou/mybatis-plus/issues/633
上一篇:解决django-apscheduler和gunicorn重复运行
下一篇:解决swarm中eureka注册无法获取主机名