predis连接问题(connection refused)排查

简介: ## 背景 最近有用户报使用PHP客户端`predis`访问阿里云`Redis`(原`KVStore`)时,会出现`connection refused`错误,用户怀疑是因为后端连接数超了,导致连接被拒绝,但是监控看连接数并没有超过阈值,进而怀疑是后端redis的连接数限制逻辑有问题,经过排查发现连接数限制逻辑并没有问题,下面说下具体的排查过程。 ## 排查过程 通常通过`socke

背景

最近有用户报使用PHP客户端predis访问阿里云Redis(原KVStore)时,会出现connection refused错误,用户怀疑是因为后端连接数超了,导致连接被拒绝,但是监控看连接数并没有超过阈值,进而怀疑是后端redis的连接数限制逻辑有问题,经过排查发现连接数限制逻辑并没有问题,下面说下具体的排查过程。

排查过程

通常通过socket进行网络通信,出现connection refused错误,主要是由于以下原因引起的,

  • 目标端口没有打开,可能是监听端口的进程的已经挂了
  • 有防火墙阻塞连接,客户端发过来的包直接被丢弃掉
  • 监听端口对应的tcp backlog已经满了
  • 网络质量问题

用户怀疑报connection refused是因为后端连接数限制逻辑有问题,首先来排除这个原因。

实际上根据后端实现,当连接数超限时,会向客户端返回明确的错误信息,实际测试也可以发现,predis抛出的异常信息不是connection refused,而是比较直观的错误信息,如下,

max number of clients reached

后端Redis挂了,这个可能性很小,直接看redis日志即可排除。防火墙的问题,在目前云Redis服务上也不存在相关设置,可以排除。

监听端口对应的tcp backlog满了,这个是一个可能性比较大的原因,之前也确实出现过因为backlog设置的过小导致连接拒绝的情况,执行netstat -s | grep -i listen,如果有如下信息且数字还在增长,就基本可以确定是backlog的问题了,更具体的信息可以通过tcpdump抓包获取,

    10809 times the listen queue of a socket overflowed
    10809 SYNs to LISTEN sockets ignored

但是之前我们就在异常实例的机器上调整过系统的somaxconn参数和redis本身的backlog参数到一个比较大的数值,所以发生connection refused并非是因为tcp backlog满了。

那基于排除法,应该是网络本身的异常导致的问题了,这个时候就要借助于我们强大的后台监控系统天象了,依托天象,我们可以看到,客户机到后端DB机器,在指定时间段内的网络质量情况,从天象上可以看到如下信息,

predis2

我们可以看到在连接拒绝期间,没有listen drop和listen overflow的情况,但是TCP重传率很高,有此可以肯定是在TCP建立连接时,三次握手超时导致出现connection refused错误。

总结

当问题出现时,细心排查很重要,但是如果有一个强大的后台支撑系统,能够提供各种实时和历史信息,辅助我们进行排查,往往可以起到事半功倍的效果。况且很多时候,发现问题时,问题已经是过去式了,这个时候借助于这种平台可能就是排查问题的必须条件了,这里必须要赞下我们强大的天象系统了!

目录
相关文章
|
缓存
Storcli工具使用方法(附管理工具)
Storcli工具使用方法(附管理工具)
3116 0
|
监控 网络协议 数据安全/隐私保护
云MAS中CMPP3.0协议封装与移动短信状态报告状态码说明
云MAS中CMPP3.0协议封装与移动短信状态报告状态码说明
2142 1
|
12月前
|
数据采集 分布式计算 监控
智能数据建设与治理 Dataphin:阿里云的一站式数据治理利器
阿里云Dataphin是一款企业级数据治理与智能建设平台,专注于解决数据孤岛、质量低下和开发效率低等问题。它提供从数据集成、规范建模、智能开发到质量监控及资产管理的全生命周期解决方案,特别适用于中大型企业构建数据中台或推进数字化转型。Dataphin通过自动化生成代码、内置质量规则模板和全局血缘追踪等功能,显著提升数据开发效率与跨团队协作能力。尽管学习曲线较陡峭且资源消耗较高,但其深度集成阿里云生态的优势,使其成为追求规范化数据治理企业的理想选择。推荐已采用阿里云技术栈并具备一定数据团队规模的企业使用。
691 1
|
存储 安全 索引
回收站删除的照片怎么恢复?
在日常使用电脑的过程中,我们常常会不小心误删照片、文件或者其他重要数据,尤其是在清空回收站后,许多人会感到恐慌,担心数据永远丢失。不过,实际上,即使回收站中的照片被删除,也并非完全没有恢复的可能。本文将详细介绍几种常用的照片恢复方法,帮助大家在遇到类似问题时能够及时采取措施,尽可能地找回丢失的数据。
|
算法 小程序 API
2025年最新蓝牙Beacon技术深度剖析与停车场定位导航实战指南
本文通过分析蓝牙Beacon技术工作原理、停车场定位导航硬件部署、蓝牙信号平滑处理等,旨在剖析蓝牙Beacon技术在停车场定位导航系统中的实际应用与优势,迅速定位空闲车位,提供反向寻车功能,并优化停车场管理流程,有效解决大型停车场中的找车位难题。如需获取详细解决方案可前往文章最下方获取,如有项目需求及技术合作可私信作者。
1087 0
|
Kubernetes Java 调度
Kubernetes中的Pod垃圾回收策略是什么
Kubernetes中的Pod垃圾回收策略是什么
|
SQL 安全 网络安全
阿里云高防服务器如何实现安全防护,以及如何接触安全防护
阿里云高防服务器如何实现安全防护,以及如何接触安全防护
|
机器学习/深度学习 编解码 PyTorch
复旦大学提出SemiSAM | 如何使用SAM来增强半监督医学图像分割?这或许是条可行的路
复旦大学提出SemiSAM | 如何使用SAM来增强半监督医学图像分割?这或许是条可行的路
855 0
|
Unix Linux Shell
win11系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)
2020年,这年头如果出去面试和面试官不聊几句Docker,都不好意思说自己是搞开发的。之前玩儿Docker都是在Mac系统里,没碰到过什么大问题,不过Docker这种容器技术本身就对Unix内核的系统天生友好,毕竟人家身体里流淌着linux的纯血基因,但是Docker对于Windows系统就显得不那么平易近人了,对待win10用户就有点矫情了,除了要求必须是64位系统以外,还必须要求系统版本是专业版,而家庭版用户想要一亲芳泽,还得借助Docker tool box这样的工具,所以这里作为win10家庭版用户的我们就依托docker tool box 来感受一下docker的魅力。
win11系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)
|
存储 数据安全/隐私保护 计算机视觉
python 实现dcmtk关联pacs功能 推送下拉影像
1、dcmtk关联pacs的参数介绍 2、dcmtk命令介绍 3、演示工具的功能 4、说明使用的技术 5、遇到的问题 6、工具目前存在的缺点
537 0
python 实现dcmtk关联pacs功能 推送下拉影像