mysql - .NET Core 延迟峰值 - MySQL 和 Redis 偶尔无法连接

标签 mysql docker asp.net-core redis .net-core

我在 Amazon Linux AMI(基于 CentOS)[在亚马逊 EC2 实例中运行]、MySQL 上的 Docker 中运行 .NETCore 应用程序数据库托管在 Amazon RDS 上,Redis 与 .NETCore 应用程序本地托管在同一台机器上

应用位于 Apache 代理后面

要连接到 MySQL 和 Redis,我使用 MySql.DataStackExchange.Redis nuget 包

问题: 应用程序有巨大的延迟峰值,有时会因错误而失败

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 连接超时错误(现在没有登录我)

Graph from Grafana 哪里可以看到尖刺

我已经尝试过不同的 linux 发行版和 nginx 而不是 Apache 但没有成功

这是我的 RedisConnector 基类,所有执行 Redis 操作的类都继承自它 https://pastebin.com/aq7mDhk5

这是我的 BaseDatabase 基类,所有执行 MySQL 操作的类都继承自该基类 https://pastebin.com/2639X5va

最佳答案

问题解决

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

关于mysql - .NET Core 延迟峰值 - MySQL 和 Redis 偶尔无法连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380881/

相关文章:

MySQL 从同一组外部表中获取成对的行

php - 用户内容 : two tables with columns of the same name or join?

DockerHub 在自动构建中设置标签别名

docker - 如何使用BUILDBOT_CONFIG_URL配置buildbot docker容器

c# - 如何减少 ASP.NET Core 中的 cookie 大小(类似于使用引用模式)?

c# - 我如何将计算字段添加到 access_token/id_token

c# - 将子类转换到父类。我做得对吗?

php - 使用 Kohana Framework 从 2 个数据库中的表中进行选择

php - 列出类别以及每个项目的数量

bash - 为什么运行docker容器时没有执行 `~/.bashrc`?