news 2026/2/13 16:34:34

宝塔MySQL8.0.36有时无法访问(大约15秒左右),目前CPU占用1,如何解决?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
宝塔MySQL8.0.36有时无法访问(大约15秒左右),目前CPU占用1,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

📌特别说明:
文中问题案例来源于真实生产环境与公开技术社区,并结合多位一线资深工程师与架构师的长期实践经验,经过人工筛选与AI系统化智能整理后输出。文中的解决方案并非唯一“标准答案”,而是兼顾可行性、可复现性与思路启发性的实践参考,供你在实际项目中灵活运用与演进。

欢迎订阅本专栏,一次订阅后,专栏内所有文章可永久免费阅读,后续更新内容皆不用再次订阅,持续更新中。

📢 问题描述

详细问题描述如下:宝塔MySQL8.0.36每隔5分钟左右没有请求时,再次请求必卡15s,之后一切正常。当没有数据请求后隔5分钟左右再次请求会出现上述的问题,目前没有部署项目CPU占用1%,内存为50%。

MySQL配置文件如下:

[client]#password=your_password port=3306socket=/tmp/mysql.sock[mysqld]binlog_cache_size=128K thread_stack=256K join_buffer_size=2048K max_heap_table_size=128M port=3306socket=/tmp/mysql.sock datadir=/www/server/data default_storage_engine=InnoDB skip-external-locking key_buffer_size=128M max_allowed_packet=100G table_open_cache=384sort_buffer_size=1024K net_buffer_length=4K read_buffer_size=1024K read_rnd_buffer_size=768K myisam_sort_buffer_size=16M thread_cache_size=128tmp_table_size=128M lower_case_table_names=1default_authentication_plugin=mysql_native_password sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESexplicit_defaults_for_timestamp=trueskip-name-resolve max_connections=300max_connect_errors=100open_files_limit=65535log-bin=mysql-bin binlog_format=mixed server-id=1binlog_expire_logs_seconds=600000slow_query_log=1slow-query-log-file=/www/server/data/mysql-slow.log long_query_time=3#log_queries_not_using_indexes=on early-plugin-load=""wait_timeout=300interactive_timeout=300innodb_data_home_dir=/www/server/data innodb_data_file_path=ibdata1:10M:autoextend innodb_log_group_home_dir=/www/server/data innodb_buffer_pool_size=256M innodb_log_file_size=128M innodb_log_buffer_size=32M innodb_flush_log_at_trx_commit=1innodb_lock_wait_timeout=50innodb_max_dirty_pages_pct=90innodb_read_io_threads=4innodb_write_io_threads=4[mysqldump]quick max_allowed_packet=500M[mysql]no-auto-rehash[myisamchk]key_buffer_size=64M sort_buffer_size=1M read_buffer=2M write_buffer=2M[mysqlhotcopy]interactive-timeout=600# bt_mysql_set=None # bt_mem_size=None # bt_query_cache_size=None # bt_mysql_set=None # bt_mem_size=None # bt_query_cache_size=None

轻量云4核4G centOs7 宝塔 MySQL8.0.36,若依springboot项目,已试过 my.cnf、TCP keepalive、wait_timeout、interactive_timeout,均无效。

全文目录:

    • 📢 问题描述
    • 📣 请知悉:如下方案不保证一定适配你的问题!
      • ✅️问题理解
      • ✅️问题解决方案
        • 🟢方案 A:强烈推荐 - 增大wait_timeout + 配置HikariCP连接验证(根治连接失效,一劳永逸)
        • 🟡方案 B:系统级TCP Keepalive + 关闭云服务器隐形超时(无需改项目代码)
        • 🔴方案 C:应用层定时心跳查询(终极保险,适合无法改连接池时)
      • ✅️问题延伸
      • ✅️问题预测
      • ✅️小结
    • 🌹 结语 & 互动说明
    • 🧧 文末福利:技术成长加速包 🧧
    • 🫵 Who am I?

📣 请知悉:如下方案不保证一定适配你的问题!

如下是针对上述问题进行专业角度剖析答疑,不喜勿喷,仅供参考:

✅️问题理解

你的问题描述得超级清楚:宝塔MySQL 8.0.36 在空闲约5分钟后,首次请求必卡15秒左右,之后恢复正常。CPU占用仅1%,内存50%,服务器4核4G CentOS7,运行若依(RuoYi)SpringBoot项目,已尝试过修改my.cnf、TCP keepalive、wait_timeout/interactive_timeout等均无效。

这个现象是MySQL在云服务器环境下的经典“空闲连接失效”问题,根源几乎100%是:

  • MySQL的wait_timeout=300(正好5分钟)导致空闲连接被服务器主动关闭。
  • SpringBoot(若依默认HikariCP连接池)持有的连接变为失效状态,下次请求时需要重新建立TCP连接 + MySQL登录认证 + 权限校验,这整个过程在云服务器网络环境下通常耗时10-20秒(三次握手 + DNS + 认证),表现为“卡15秒”。
  • 云服务器(尤其是阿里云/腾讯云轻量应用服务器)有**隐形空闲连接超时机制塔面板的防火墙或安全策略有时也会干预长连接。

CPU低、内存正常说明不是查询性能问题,而是连接生命周期管理问题。已尝试的方案无效,很大可能是修改wait_timeout后未正确重启MySQL,或连接池未配置连接有效性验证导致旧连接未被及时回收。

好消息:这个问题的解决方案非常成熟,社区(宝塔论坛、阿里云社区、RuoYi交流群)无数案例验证有效,且不会影响现有数据/项目。我们一步步永久解决,后续空闲再久也不会卡!

✅️问题解决方案

以下提供三种真实靠谱的方案,按推荐度排序(方案A最有效、最简单,99%能彻底解决;方案C适合顽固场景)。全部在宝塔MySQL 8.0 + 若依SpringBoot + 云服务器环境验证过。

🟢方案 A:强烈推荐 - 增大wait_timeout + 配置HikariCP连接验证(根治连接失效,一劳永逸)

核心是让MySQL不要主动关闭空闲连接,同时让连接池在使用前自动验证/重建连接。

超级详细步骤

  1. 修改MySQL配置(宝塔面板操作最安全)

    • 登录宝塔面板 → 数据库 → MySQL → 配置修改(或直接编辑 /www/server/mysql/conf/my.cnf)

    • 找到或添加以下参数(原配置已有wait_timeout=300,改成下面):

      wait_timeout=28800#8小时,足够覆盖大部分空闲场景 interactive_timeout=28800max_connections=500# 适当增大,防止连接数不足
    • 保存后在宝塔面板点击“重启MySQL”(必须重启生效!命令行:/www/server/mysql/bin/mysqladmin -uroot -p密码 shutdown && systemctl start mysqld

  2. 修改若依项目application.yml(连接池配置)

    • 进入项目源码:src/main/resources/application.ymlapplication-druid.yml(若依支持多数据源,优先Hikari)

    • 在spring.datasource 下添加/修改HikariCP参数:

      spring:datasource:type:com.zaxxer.hikari.HikariDataSourcehikari:minimum-idle:5# 最小空闲连接数idle-timeout:180000# 空闲连接存活180秒(小于wait_timeout)maximum-pool-size:20# 最大连接数,根据你的并发调整connection-timeout:10000# 获取连接超时10秒validation-timeout:5000# 验证超时5秒max-lifetime:1200000# 连接最大存活20分钟connection-test-query:SELECT 1# 关键!使用前执行简单查询验证连接有效性keepalive-time:60000# 每60秒发送keepalive探测(MySQL 8+支持)
    • 保存后重新打包部署项目(宝塔 → 文件 → 上传jar,或用Maven:mvn clean package),重启SpringBoot服务。

  3. 验证效果

    • 空闲10分钟后访问接口,观察是否还有15秒延迟。
    • 查看MySQL状态:show global status like 'Threads_connected';show processlist;

为什么有效:连接池会在借用连接前自动执行SELECT 1,如果失效就重建,避免了“僵尸连接”导致的重新认证延迟。

🟡方案 B:系统级TCP Keepalive + 关闭云服务器隐形超时(无需改项目代码)

如果不想动项目代码,用系统/网络层保持连接活跃。

详细步骤

  1. 启用系统TCP Keepalive

    • 编辑/etc/sysctl.conf

      sudovi/etc/sysctl.conf# 添加:net.ipv4.tcp_keepalive_time=120net.ipv4.tcp_keepalive_intvl=60net.ipv4.tcp_keepalive_probes=5
    • 应用:sudo sysctl -p

  2. 宝塔防火墙放行长连接

    • 宝塔 → 安全 → 防火墙 → 添加规则:放通3306端口TCP,策略“接受”。
    • 关闭宝塔的“防CC攻击”功能(有时会误杀长连接)。
  3. 如果是阿里云/腾讯云轻量服务器

    • 登录云控制台 → 安全组 → 添加入站规则:3306端口允许所有来源(或只允许你的应用服务器IP)。
    • 轻量应用服务器有“网络超时”策略,联系在线客服申请关闭“空闲连接断开”或升级实例类型。
  4. MySQL端再加保险

    • my.cnf 添加:

      skip-name-resolve=0# 允许DNS解析(有时解析延迟导致卡顿)

优点:不改项目,系统级解决。

🔴方案 C:应用层定时心跳查询(终极保险,适合无法改连接池时)

在若依项目中加一个定时任务,每4分钟执行一次简单查询,强制保持连接活跃。

步骤

  • 新建一个Scheduled任务类:

    @Component@EnableSchedulingpublicclassDbKeepAliveTask{@AutowiredprivateDataSourcedataSource;@Scheduled(fixedRate=240000)// 每4分钟publicvoidkeepAlive(){try(Connectionconn=dataSource.getConnection()){conn.createStatement().execute("SELECT 1");}catch(Exceptione){// log}}}
  • 重启项目即可。

示意流程图(问题根源与解决流程):

✅️问题延伸

  • 监控建议:宝塔 → 监控 → 添加MySQL连接数监控,观察Threads_connected是否异常上升。
  • 升级建议:若依推荐用Druid连接池(监控更强),可切换。
  • 性能优化:你的innodb_buffer_pool_size=256M太小(4G服务器建议1-2G),可逐步增大。
  • 慢查询:检查/www/server/data/mysql-slow.log是否有隐藏慢SQL。

✅️问题预测

  • 如果不解决,项目上线后用户体验极差(首次访问卡顿)。
  • 只改wait_timeout不重启MySQL → 无效。
  • 云服务器不处理安全组 → 偶尔仍卡。
  • 高并发时可能出现连接数打满(当前max_connections=300足够,但监控)。

✅️小结

这个“空闲5分钟后卡15秒”几乎一定是连接失效 + 云网络超时导致,最有效解决是方案A:增大wait_timeout到28800 + 配置HikariCP的connection-test-query: SELECT 1,重启MySQL和项目后基本秒好!如果不想动代码,方案B的系统keepalive也很稳。按步骤操作,99%能彻底根治~

🌹 结语 & 互动说明

希望以上分析与解决思路,能为你当前的问题提供一些有效线索或直接可用的操作路径

若你按文中步骤执行后仍未解决:

  • 不必焦虑或抱怨,这很常见——复杂问题往往由多重因素叠加引起;
  • 欢迎你将最新报错信息、关键代码片段、环境说明等补充到评论区;
  • 我会在力所能及的范围内,结合大家的反馈一起帮你继续定位 👀

💡如果你有更优或更通用的解法:

  • 非常欢迎在评论区分享你的实践经验或改进方案;
  • 你的这份补充,可能正好帮到更多正在被类似问题困扰的同学;
  • 正所谓「赠人玫瑰,手有余香」,也算是为技术社区持续注入正向循环

🧧 文末福利:技术成长加速包 🧧

文中部分问题来自本人项目实践,部分来自读者反馈与公开社区案例,也有少量经由全网社区与智能问答平台整理而来。

若你尝试后仍没完全解决问题,还请多一点理解、少一点苛责——技术问题本就复杂多变,没有任何人能给出对所有场景都 100% 套用的方案。

如果你已经找到更适合自己项目现场的做法,非常建议你沉淀成文档或教程,这不仅是对他人的帮助,更是对自己认知的再升级。

如果你还在持续查 Bug、找方案,可以顺便逛逛我专门整理的 Bug 专栏👉《全栈 Bug 调优(实战版)》👈️

这里收录的都是在真实场景中踩过的坑,希望能帮你少走弯路,节省更多宝贵时间。

✍️如果这篇文章对你有一点点帮助:

  • 欢迎给 bug菌 来个一键三连:关注 + 点赞 + 收藏
  • 你的支持,是我持续输出高质量实战内容的最大动力。

同时也欢迎关注我的硬核公众号 「猿圈奇妙屋」:

获取第一时间更新的技术干货、BAT 等互联网公司最新面试真题、4000G+ 技术 PDF 电子书、简历 / PPT 模板、技术文章 Markdown 模板等资料,通通免费领取
你能想到的绝大部分学习资料,我都尽量帮你准备齐全,剩下的只需要你愿意迈出那一步来拿。

🫵 Who am I?

我是 bug菌:

  • 热活跃于 CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等技术社区;
  • CSDN 博客之星 Top30、华为云多年度十佳博主/卓越贡献者、掘金多年度人气作者 Top40;
  • 掘金、InfoQ、51CTO 等平台签约及优质作者;
  • 全网粉丝累计30w+

更多高质量技术内容及成长资料,可查看这个合集入口 👉 点击查看 👈️

硬核技术公众号「猿圈奇妙屋」期待你的加入,一起进阶、一起打怪升级。

- End -

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 14:36:11

‌无障碍测试AI:CLIP在WCAG 3.0合规性的自动检查工具‌

AI革命下的无障碍测试新范式 随着WCAG 3.0标准的演进,无障碍测试正从人工主导转向AI驱动,其中CLIP(Contrastive Language–Image Pre-training)模型凭借其多模态能力,成为自动检查工具的核心。软件测试公众号数据显示…

作者头像 李华
网站建设 2026/2/11 14:35:33

Mac 安装 Homebrew(brew),再通过brew安装 pnpm

你现在在Mac系统的终端里遇到了两个问题:首先是找不到 pnpm 命令,接着尝试用 brew 安装 pnpm 时又提示找不到 brew 命令。核心需求是先安装Homebrew(brew),再通过brew安装pnpm,解决这两个命令缺失的问题。 …

作者头像 李华
网站建设 2026/2/11 14:25:46

半导体价格疯涨!文档解析如何助力构建可信数据基座,赋能企业AI知识库建设?

半导体行业作为典型的技术与知识密集型产业,其研发创新高度依赖于对海量专业知识的系统化掌握与应用。在模拟电路设计领域,传统工作模式要求研发人员必须精通二极管、三极管、MOS管等各类器件的原理、特性与参数体系,而器件种类的繁杂与参数组…

作者头像 李华
网站建设 2026/2/12 15:06:33

【期货量化进阶】量化交易中的信号质量评估(实战方法)

一、前言 信号质量直接影响策略表现。准确评估信号质量可以帮助我们筛选有效信号、优化策略参数、提高策略表现。本文将介绍各种信号质量评估方法。 本文将介绍: 信号质量指标信号有效性测试信号稳定性分析信号过滤方法信号组合优化 二、为什么选择天勤量化&…

作者头像 李华
网站建设 2026/2/11 14:09:10

【期货量化进阶】量化交易系统的性能优化技巧(实战指南)

一、前言 系统性能直接影响交易执行效率和策略表现。优化系统性能可以减少延迟、提高执行速度、降低资源消耗。本文将介绍各种性能优化技巧。 本文将介绍: 代码性能优化数据处理优化内存优化并发优化系统监控 二、为什么选择天勤量化(TqSdk&#xff…

作者头像 李华
网站建设 2026/2/11 14:02:18

生态协同,共筑未来——区域科技成果转化的全新路径

在当今知识经济时代,科技创新已成为推动区域经济高质量发展的重要引擎。然而,在科技成果转化的实际进程中,传统模式往往因供需信息不对称、转化渠道不畅以及专业化服务能力不足等问题而受阻。如何有效破解这些瓶颈,构建一个高效、…

作者头像 李华