我在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
答案 0 :(得分:3)
我可以通过限制“threads_connected”的数量来改善这一点吗?
绝对不是。
通过限制连接数量可以做的就是为您网站的用户造成错误,因为他们的特定Apache进程无法连接到数据库。
问题是不连接的线程数。这是真正问题的症状,即您有一个或多个执行效果不佳的查询,或者您没有足够的内存以便Apache扩展流量变得很大,迫使你的机器进行大量交换,从而减慢了Apache的速度,使得连接打开的时间更长。
我需要一个快速的解决方案
抱歉......除了找到实际问题并修复它之外,没有其他解决方案。
比连接数更有用的是这些连接现在正在做什么?
MySQL中的 SHOW FULL PROCESSLIST;
将回答这个问题。如果他们只是在睡觉,他们不会伤害MySQL方面的任何东西,你可能想限制Apache进程的数量,但如果这是网站流量水平的副作用,那么你的服务器实际上可能也是如此如果浏览器连接保持空闲的Apache子节点,消耗内存,则可能需要禁用HTTP keepalive或调整超时。