MySQL 数量 threads_connected 让我的网站变慢

MySQL number of threads_connected slow down my website

我在 Prestashop 1.5.4 上有一家商店 运行。我一直对网站行为有疑问。

每次我检查这个数字

user@server:~$ mysql -se "show status like '%threads_connected%'"

如果数字超过 25,我的网站就会变得非常慢。打开页面需要很长时间,页面加载时间可能高达 1 - 2 分钟。

唯一的解决方案(临时)是让我重新启动 apache 服务。

我很确定 25 是一个很低的数字。

如果您需要知道,我无法直接访问 my.ini 也无法访问 MySQL 服务器配置。我的数据库存储在共享 (DBaSS) 中。

但是我确实可以完全访问我的网络服务器(apache2.conf、php.ini、www.example.com.conf)

一些可能有用的信息:

-se "show variables like '%max%'"

输出:

我想我的问题是如何提高性能?我可以通过限制 "threads_connected" 的数量来改进吗?

脚注:

我知道代码中某处可能存在错误查询,但是,目前我需要一个快速解决方案。因为审查所有查询可能需要一些时间。

编辑#1

也许这些信息可以提供一些想法

编辑 #2

Can i improve this by limiting the number of "threads_connected"?

绝对不是。

您通过限制连接数所能做的就是给您站点的用户带来错误,因为他们特定的 Apache 进程将无法连接到数据库。

问题是不是连接的线程数。这是真正问题的一个症状,即您有一个或多个查询执行不佳,或者您没有足够的内存供 Apache 扩展 当流量变大时,迫使您的计算机进行大量交换,从而降低 Apache 的速度,使其保持连接打开的时间更长。

I need a quick solution for this

抱歉...但是除了找到实际问题并解决它之外没有其他解决方案。

比连接数更有用的是这些连接现在在做什么?

SHOW FULL PROCESSLIST; in MySQL 将回答该问题。如果他们只是在睡觉,他们不会在 MySQL 方面造成任何伤害,您可能希望限制 Apache 进程的数量,但如果这是站点流量水平的副作用,那么您的服务器实际上可能太小,或者您可能需要禁用 HTTP keepalive,或者调整超时,如果浏览器连接保持打开的 Apache 子进程处于空闲状态,消耗内存。