Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next recovery time #146

Open
wang1163619 opened this issue May 20, 2023 · 13 comments
Open

Next recovery time #146

wang1163619 opened this issue May 20, 2023 · 13 comments

Comments

@wang1163619
Copy link

最近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)
......................

@wang1163619
Copy link
Author

之前一直使用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
.......
问题依旧。

@wang1163619
Copy link
Author

wang1163619 commented May 20, 2023

部署环境:
redis 服务器是阿里云 16核心32G
网关服务器也是阿里云 16核心32G
网关用的是ocelot, docker容器化部署。
当前请求量大一点时候,网关容器就会出现上面redis timeout 错误。

@2881099
Copy link
Owner

2881099 commented May 20, 2023

方向一

访问量这么大的情况下,会不会触发服务器防火墙,盾之类的策略?

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。

@wang1163619
Copy link
Author

没有使用域名,都是通过ip加端口号访问的

@wang1163619
Copy link
Author

也没有触发服务器防火墙,盾之类的,因为,有4个网关docker实列,当一个网关docker容器超时,其它2个或者3个没有超时异常。

@wang1163619
Copy link
Author

我们还想问一下,我们这个访问量还适合继续使用freeredis吗?

@2881099
Copy link
Owner

2881099 commented May 20, 2023

没有什么合不合适的,错误提示网络连接超时。遇到这种情况,分析并记录额外的情况。例如,发生错误时,自己编写socket open尝试连接Redis sever,并记录到日志是否成功。以及用socket连接其他服务器是否成功。

@wang1163619
Copy link
Author

那就是说,这里得超时跟freeredis没有关系,可能跟其它原因有关系,比如网络中断等原因有关,是吧。

@2881099
Copy link
Owner

2881099 commented May 21, 2023

是的,FreeSql 没有特别操作,最终也是 socket connect

@wang1163619
Copy link
Author

我们采用的是异步调用,流量大的时候导致程序拒绝服务,所以一直报Next recovery time,暂时还没有时间dump,来证实这个问题。

@wang1163619
Copy link
Author

await redis.GetAsync()

@xiaolei000129
Copy link

解决了吗?

@tuana2k38
Copy link

Hi wang1163619! Have you resolved your issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants