一次故障的诊断过程

一次故障的诊断过程

💡 原文中文,约26200字,阅读约需63分钟。
📝

内容提要

文章讨论了MySQL数据库在线升级过程中出现的故障,Sysbench压力测试工具在此过程中QPS持续为零。分析发现,问题源于Sysbench未能正确处理连接,导致大量CLOSE_WAIT状态的连接和CPU使用率飙高。最终确认问题与MariaDB的libmysqlclient库有关,建议使用MySQL社区版的libmysqlclient以解决此问题。

🎯

关键要点

  • 在MySQL数据库在线升级过程中,Sysbench压力测试工具的QPS持续为零。
  • 问题源于Sysbench未能正确处理连接,导致大量CLOSE_WAIT状态的连接和CPU使用率飙高。
  • 分析确认问题与MariaDB的libmysqlclient库有关,建议使用MySQL社区版的libmysqlclient以解决此问题。
  • Sysbench在连接异常断开后,错误地重复创建连接,导致端口耗尽和CPU使用率过高。
  • 通过抓包分析发现,Sysbench未能读取服务器的Greeting信息,导致连接状态为CLOSE_WAIT。
  • 更换libmysqlclient库后,问题得到解决,表明MariaDB的实现存在缺陷。

延伸问答

在MySQL数据库在线升级过程中,Sysbench出现了什么问题?

Sysbench在在线升级过程中QPS持续为零,未能正确处理连接,导致大量CLOSE_WAIT状态的连接和CPU使用率飙高。

导致Sysbench QPS为零的根本原因是什么?

根本原因是Sysbench未能正确处理连接,错误地重复创建连接,导致端口耗尽和CPU使用率过高。

如何解决Sysbench在MySQL升级中遇到的问题?

建议使用MySQL社区版的libmysqlclient库,以解决与MariaDB的libmysqlclient库相关的问题。

Sysbench在连接异常断开后发生了什么?

Sysbench在连接异常断开后错误地重复创建连接,导致大量CLOSE_WAIT状态的连接。

CLOSE_WAIT状态的连接是如何产生的?

CLOSE_WAIT状态的连接是因为Sysbench未能读取服务器的Greeting信息,导致连接状态为CLOSE_WAIT。

Sysbench的高CPU使用率是由什么引起的?

高CPU使用率是由于Sysbench在连接异常时不断尝试创建新连接,导致内核在寻找可用端口时进入死循环。

➡️

继续阅读