我有一家在 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
抱歉...但除了找到实际问题并解决它之外,没有其他解决方案。
比连接数更有用的是这些连接现在在做什么?
MySQL 中的SHOW FULL PROCESSLIST;
将回答这个问题。如果他们只是在 sleep ,他们不会伤害 MySQL 方面的任何东西,并且您可能想要限制 Apache 进程的数量,但如果这是站点流量水平的副作用,那么您的服务器实际上可能太小,或者您可能需要禁用 HTTP keepalive,或调整超时,如果浏览器连接保持打开的 Apache 子项处于空闲状态,消耗内存。
关于php - MySQL的threads_connected数量减慢了我的网站速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928921/