我们有一个 MySQL 实例,大部分时间都运行良好。然而,我们有时会观察到奇怪的行为。发生的情况是 MySQL 连接突然达到限制(当前设置为 1000)并且 MySQL 几乎停止。当我们检查此服务器的图表时,会观察到以下内容:
该图像来自运行 MySQL 导出器的 Grafana 实例。困扰我的是为什么不重用缓存中的线程。另一个问题是为什么缓存中的线程突然降为零但同时没有创建新线程(根据第二张图 - 蓝线保持为 0)。
最终,我的目标是了解为什么突然使用 1000 个连接,以及这是 MySQL 还是应用程序的问题。这是 MySQL 文档关于线程的说法:
服务器应缓存多少线程以供重用。当客户端断开连接时,如果那里的线程少于 thread_cache_size,则客户端的线程将被放入缓存中。如果可能,通过重用从缓存中获取的线程来满足对线程的请求,并且只有当缓存为空时才会创建新线程。
任何帮助或指导将不胜感激!