讲师中心 微信公众号
AI工具推荐 视频效率加速

如何排查Redis由于网络多路复用epoll句柄耗尽引发的Connection refused报错

夜磊同学_9984

夜磊同学_9984

发布时间:2026-06-11 13:54:25

|

857人浏览过

|

来源于php中文网

原创

Connection refused通常不是epoll句柄耗尽的直接表现,而是服务未启动、防火墙拦截、bind配置错误等更常见原因所致;仅当排除这些后,结合ss端口不监听、dmesg报Too many open files、INFO中rejected_connections增长等现象,才需排查文件描述符限制、maxclients配置及tcp-keepalive等深层因素。

如何排查redis由于网络多路复用epoll句柄耗尽引发的connection refused报错

Redis 出现 Connection refused 报错,**通常不是 epoll 句柄耗尽的直接表现**——epoll 耗尽本身不会让 Redis 主动拒绝新连接并返回 “Connection refused”,而是更可能引发 accept() 失败、连接堆积、超时、或服务假死,最终表现为客户端连不上(看似 Connection refused),但真实原因藏得更深。

先确认是不是 epoll 句柄问题

Connection refused 的常见根因(服务未监听、防火墙拦截、bind 配置错误等)必须优先排除。只有当这些都排除后,且出现以下组合现象,才需怀疑 epoll 或底层文件描述符(fd)资源枯竭:

  • Redis 进程仍在运行(ps 可见),但 ss -tlnp | grep 6379 或 netstat -tlnp | grep 6379 显示端口 不再监听 或监听状态异常(如 LISTEN 但无进程名)
  • 系统日志中频繁出现 Too many open files、Cannot allocate memory 或 accept: Too many open files 类似报错(查 dmesg -T | tail -20 或 journalctl -u redis --since "1 hour ago" | grep -i "file\|open\|accept")
  • Redis INFO 输出中 connected_clients 接近甚至超过 maxclients,而 rejected_connections 持续增长
  • cat /proc/$(pgrep redis-server)/limits | grep "Max open files" 显示 Limit 值极低(如 1024),且 Max open files 的 Soft 值已被打满

检查并提升系统级文件描述符限制

epoll 本身不“耗尽句柄”,但它依赖的底层 fd 资源是有限的。Redis 每个客户端连接、每个定时器、每个后台 RDB/AOF 文件操作都会占用 fd。若系统限制太低,Redis 在创建新 socket 或打开持久化文件时就会失败。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 查看当前 Redis 进程的 fd 限制:cat /proc/$(pgrep redis-server)/limits | grep "Max open files"
  • 临时提高(仅当前会话):ulimit -n 65536(需在启动 Redis 前执行)
  • 永久生效(推荐):
    • 编辑 /etc/security/limits.conf,添加两行:
      redis soft nofile 65536
      redis hard nofile 65536
      (假设 Redis 以用户 redis 运行;若用 root 或 systemd 启动,需对应调整用户名)
    • 确保 pam_limits.so 已启用(检查 /etc/pam.d/common-session 或 /etc/pam.d/sshd 是否含 session required pam_limits.so)
    • 重启 Redis 服务(systemd 下需 reload daemon:sudo systemctl daemon-reload && sudo systemctl restart redis)

检查 Redis 自身配置与连接管理

即使系统 fd 上限足够,Redis 若配置不当,仍会快速占满可用 fd:

  • 确认 maxclients 设置合理:redis-cli config get maxclients。默认值通常是 10000,但如果系统 ulimit 只有 1024,实际生效值会被截断为 1024−32(预留系统 fd)。建议设为 ulimit soft limit − 256
  • 检查是否有大量短连接未释放:用 redis-cli info clients 查看 connected_clients 和 client_longest_output_list。若前者高、后者也高,说明存在 client buffer 积压,可能因客户端未及时读响应导致连接 hang 住
  • 启用 tcp-keepalive(如 tcp-keepalive 300)可主动探测和清理僵死连接,缓解 fd 泄漏
  • 避免在配置中开启不必要的功能(如 notify-keyspace-events 全开),它们会额外创建内部 fd

验证 epoll 相关内核参数(较少见,但高并发场景需关注)

Linux 内核对 epoll 实例数及每个实例监控的 fd 数也有上限,不过 Redis 单实例只用一个 epoll 实例,极少触达此限。仅当单机部署大量 Redis 实例或混布其他高 fd 应用时才需检查:

  • cat /proc/sys/fs/epoll/max_user_watches —— 默认常为几十万,一般无需调大
  • cat /proc/sys/fs/file-max —— 系统级总 fd 上限,应远大于所有进程 fd 之和(建议 ≥ 2× 总预期 fd)
  • 若确需调整,可临时写入:echo 2097152 > /proc/sys/fs/file-max;永久配置加到 /etc/sysctl.conf 中

真正由 epoll 层面直接导致 Connection refused 的情况极为罕见。绝大多数所谓“epoll 耗尽”问题,本质是 文件描述符耗尽 + Redis 无法 accept 新连接 + 端口监听失效。按上述顺序排查 fd 限制、Redis 配置、连接行为和系统日志,就能准确定位并解决。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

860

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2512

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

856

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

749

2023.10.17

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

394

2023.10.17

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2256

2023.10.18

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

4152

2023.10.20

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

160

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn