.net核心延迟峰值-mysql和redis偶尔无法连接

bvjxkvbb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(369)

我正在amazon linux ami(基于centos)[在amazon ec2示例中运行]的docker中运行.netcore应用程序,mysql数据库托管在amazon rds上,redis托管在与.netcore应用程序相同的本地计算机上
应用程序位于apache代理之后
为了连接到mysql和redis,我使用mysql.data和stackexchange.redis numget包
问题:应用程序有巨大的延迟峰值,有时会出错

Connection id "0HLFB3QH78G7P", Request id "0HLFB3QH78G7P:00000001": 
An unhandled exception was thrown by the application.
StackExchange.Redis.RedisTimeoutException: Timeout performing ZREVRANGE globalLeaderboard, 
inst: 1, queue: 7, qu: 0, qs: 7, qc: 0, wr: 0, wq: 0, in: 7, ar: 0, 
clientName: RedisConnection, serverEndpoint: 172.17.0.1:6379, keyHashSlot:1809

或者mysql连接超时错误(现在没有登录我)
grafana的图表,你可以看到尖峰
我已经尝试过不同的linux发行版和nginx而不是apache,但是没有成功
这是我的redisconnector基类,所有执行redis操作的类都从中继承https://pastebin.com/aq7mdhk5
这是我的basedatabase基类,所有执行mysql操作的类都从中继承https://pastebin.com/2639x5va

93ze6v8z

93ze6v8z1#

问题已解决
所有的问题都是因为我使用的自定义中间件在调用之前执行了一些同步数据库操作 _next.Invoke() 考虑到中间件被视为单例,它可能会阻塞接收线程。

相关问题