Open wang1163619 opened 1 year ago
之前一直使用freeredis,总体感觉来说挺好用的, 但是最近当前网络请求差不多20k pps时候,就会出现大量的timeout。 了解到:ObjectPool.Get 获取超时(10秒)应该从哪个方向去找问题? #134 我们做了很多尝试,修改连接池 min pool =5 max pool =800 min pool =10 max pool=100 min pool =30 max pool =100 ....... 问题依旧。
部署环境: redis 服务器是阿里云 16核心32G 网关服务器也是阿里云 16核心32G 网关用的是ocelot, docker容器化部署。 当前请求量大一点时候,网关容器就会出现上面redis timeout 错误。
访问量这么大的情况下,会不会触发服务器防火墙,盾之类的策略?
Connect to redis-server(112.20.140.111:2255) timeout,是在几秒内无法连接到 redis-server 的反馈,只是 socket.Connect 没有过多其他逻辑。
你可以单独写个测试程序, 并发 new Socket() Connect redis-server 看看结果。
redis-server 是否提供域名进行的访问,如果 FreeRedis 配置使用域名,那么最终解析到的 IP 有可能发生变化。
阿里云域名指向会发生变化,导致 FreeRedis 仍然在连接老的 IP。
没有使用域名,都是通过ip加端口号访问的
也没有触发服务器防火墙,盾之类的,因为,有4个网关docker实列,当一个网关docker容器超时,其它2个或者3个没有超时异常。
我们还想问一下,我们这个访问量还适合继续使用freeredis吗?
没有什么合不合适的,错误提示网络连接超时。遇到这种情况,分析并记录额外的情况。例如,发生错误时,自己编写socket open尝试连接Redis sever,并记录到日志是否成功。以及用socket连接其他服务器是否成功。
那就是说,这里得超时跟freeredis没有关系,可能跟其它原因有关系,比如网络中断等原因有关,是吧。
是的,FreeSql 没有特别操作,最终也是 socket connect
我们采用的是异步调用,流量大的时候导致程序拒绝服务,所以一直报Next recovery time,暂时还没有时间dump,来证实这个问题。
await redis.GetAsync()
解决了吗?
Hi wang1163619! Have you resolved your issue?
最近redis 有大量的 【112.20.140.111:2255/0】Next recovery time: 05/20/2023 15:14:41 (Connect to redis-server(112.20.140.111:2255) timeout) 【112.20.140.111:2255/0】Next recovery time: 05/20/2023 15:15:06 (Connect to redis-server(112.20.140.111:2255) timeout) 【112.20.140.111:2255/0】Next recovery time: 05/20/2023 15:15:31 (Connect to redis-server(112.20.140.111:2255) timeout) 【112.20.140.111:2255/0】Next recovery time: 05/20/2023 15:14:56 (Connect to redis-server(112.20.140.111:2255) timeout) ......................