php - 为什么一些 MySQL 线程永远不会死?

标签 php mysql iis

我在带有 MySQL 后端的 IIS 上运行 PHP 网络应用程序。

我的数据库在高峰时段会产生相当多的流量(每秒最多 5,000 次选择),有时我会遇到性能问题,因此我试图追踪并消除问题。

我的 CPU、Ram、磁盘、网络都很好,但远远低于容量,但我注意到有时当事情陷入困境时会有许多空闲线程闲置,如果我手动终止这些线程,性能就会恢复。

Threads

在这个例子中没有大量的空闲线程,但是你可以看到有几个已经存活了超过 500 秒。有时我看到许多线程存活超过 500 秒,但我不知道它们为什么不自杀。

以下是我的连接值

Connections

我将此服务器上的最大连接数设置为 1500,因此我知道我没有达到该限制。不确定这是否相关,但我的 innodb_thread_concurrency 设置为 66。

下面是我对mysql的超时设置

enter image description here

显然服务器配置不是我的事。我只是一个试图在这个世界上谋生的低级开发人员。我的问题是,这些长时间运行的空闲线程是否会导致我的服务器出现瓶颈并减慢速度?如果是这样,我应该查看和调整哪些设置以确保我的服务器正确处理负载?

最佳答案

原来问题是我添加到 my.ini 文件中的一个参数。打开文件限制 = 4096。

如果我将 table_cache 的大小从 300 增加到 2000,建议我添加此参数。事实证明这是个糟糕的建议。一旦我注释掉 open-files-limit = 4096,我所有的问题都消失了。线程开始死亡,它们从 300 到 500 个空闲线程减少到 20 个以下空闲线程。

关于php - 为什么一些 MySQL 线程永远不会死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49656513/

相关文章:

php - 如何在 octobercms 后端验证表单

MySQL:查询之间的最佳索引

php - 插入时如果 "title"已经存在于表中则更新记录

google-chrome - 如何修复 Windows Server 2016 上 IIS 中的 ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY

javascript - 使用字符串作为 Wordpress PDF 嵌入程序的 URL

php - Sublime-phpcs - 无法使 PHP MD 和 CS 包正常运行

PHP为网页中的变量设置变量

MySQL查询显示带有列数据的行,即使不存在

asp.net - POODLE漏洞。如果客户端的浏览器可以回退到IIS上的SSL 3.0,则发出警告

php - 如何在 iis 服务器上启用 mod_rewrite