MySQL server has gone away (2006) 排查

一、现象

     原先一直运行比较稳定的实时日志统计系统,由A机器迁移至B机器,第二天发现统计数据异常,查看日志注意到分析程序经常产生MySQL server has gone away (2006)异常退出,守护进程重新启动分析程序导致


二、问题推测

根据前后系统之间差异进行推测

1. 数据库授权,因为系统能连接上,首先排除这个因素

2. 日志收集器问题,跟这个关系不是很大,也排除除外

3. A和B机器之前的差异,注意到A机器的CPU一般5%不到,B机器CPU 一直30%~40%,最有可能此因素导致


二、问题定位

1. 查看导致MySQL server has gone away (2006)集中出现的时间正是访问高峰时期,在访问量很低的时候没有出现问题

2. 应该是高峰期超过一定时间没有和数据库交互,然后服务器主动断开连接


三、疑惑点

1. 由于日志分析的内部处理特性,应该高峰时期跟数据库交互更加频繁,没什么量时和数据库交互很少才对,而现在的想象正好反过来了


四、查出真相

1. 再次仔细查看日志,发现抛异常MySQL server has gone away (2006)主要发生在更新日志处理进度,豁然开朗

2. 我们的分析程序首先从日志中读取日志,进行处理,一直读取到EOF标识,更新处理进度,然后sleep(1),再次循环

3. 平时由于处理速度远超过日志写入速度,因为经常sleep(1),更新处理进度,相当于和数据库保持心跳,没有超过数据库超时时间

4. 而高峰时间,日志量非常大,处理能力接近日志产生能力,CPU接近90%,理论上也会定期和数据库交互,但是由于sleep的问题,日志处理能力接近极限,再加上linux 内核中文件缓存的原因,导致每个日志处理周期加长,日志处理时间就会大于10秒,没有与数据库交互,数据库主动断开连接,然后缓存在进程内存中数据丢失

5. 找OPS询问,发现A机器是32核的,B机器是4核的, 这才解释为啥B机器和A机器处理能力差距这么大


五、解决办法

1. 修改数据库配置,由于数据库由DBA统一管理,很难找出说服他修改的理由,而已即使加上超时时间,没有本质解决问题

2. 加大CPU处理能力,因为性能的瓶颈在CPU,因此采用此种方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"ERROR 2006 (HY000): MySQL server has gone away" 是MySQL数据库中常见的错误之一。这个错误通常意味着您的SQL语句执行失败,因为失去了与数据库的连接。错误消息中提到的"MySQL server has gone away"意味着MySQL服务器已经断开连接或关闭。这可能是由于以下几种原因造成的: 1. 连接超时:如果MySQL服务器在指定的时间内没有收到来自客户端的任何请求,它可能会断开连接。这可能是由于网络问题、服务器负载过高或连接闲置时间过长等原因引起的。 2. 数据库服务器重启或崩溃:如果MySQL服务器重新启动或发生崩溃,客户端的连接将被中断。 3. 数据库连接过多:如果MySQL服务器同时处理的连接数超过其配置限制,它可能会关闭一些连接以释放资源。 要解决这个问题,您可以尝试以下方法: 1. 检查网络连接:确保您的网络连接稳定,没有任何中断或故障。 2. 检查连接超时设置:您可以检查MySQL服务器的连接超时设置,并根据需要进行适当的调整。您可以通过修改MySQL配置文件(my.cnf)中的"wait_timeout"参数来增加连接超时时间。 3. 检查服务器负载:如果服务器负载过高,可以尝试减少并发连接数或优化查询以减少服务器负载。 4. 检查数据库连接数限制:您可以通过修改MySQL配置文件(my.cnf)中的"max_connections"参数来增加允许的最大连接数。 5. 检查错误日志:查看MySQL的错误日志,以获取更多关于服务器断开连接的详细信息。错误日志通常位于MySQL的数据目录下。 总之,"ERROR 2006 (HY000): MySQL server has gone away" 错误意味着您的SQL语句执行失败,因为与数据库的连接丢失。您可以通过检查网络连接、连接超时设置、服务器负载、数据库连接数限制以及MySQL的错误日志来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL错误“ERROR 2006 (HY000):MySQL server has gone away”](https://blog.csdn.net/m0_67402013/article/details/124007166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [解决MySQL报错:ERROR 2006 (HY000): MySQL server has gone away No connection(图文并茂)](https://blog.csdn.net/qq_45261963/article/details/121751845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值