predis连接问题(connection refused)排查
背景
最近有用户报使用PHP客户端predis访问阿里云Redis(原KVStore)时,会出现connection refused错误,用户怀疑是因为后端连接数超了,导致连接被拒绝,但是监控看连接数并没有超过阈值,进而怀疑是后端redis的连接数限制逻辑有问题,经过排查发现连接数限制逻辑并没有问题,下面说下具体的排查过程。
排查过程
通常通过socket进行网络通信,出现connection refused错误,主要是由于以下原因引起的,
- 目标端口没有打开,可能是监听端口的进程的已经挂了
- 有防火墙阻塞连接,客户端发过来的包直接被丢弃掉
- 监听端口对应的tcp backlog已经满了
- 网络质量问题
用户怀疑报connection refused是因为后端连接数限制逻辑有问题,首先来排除这个原因。
实际上根据后端实现,当连接数超限时,会向客户端返回明确