我今晚使用 ExpressionEngine 启动了一个客户端站点,它立即将 100 个可用的 MySQL 连接增加到最大,因此在可用连接数翻倍之后,它继续消耗所有可用连接。检查服务器后,它似乎也保留了打开的 Apache 连接。
所以我的问题是为什么要让这些连接保持打开状态,我能做些什么来解决它?否则,当网站加载时,网站会像糖蜜一样缓慢。谢谢。
我今晚使用 ExpressionEngine 启动了一个客户端站点,它立即将 100 个可用的 MySQL 连接增加到最大,因此在可用连接数翻倍之后,它继续消耗所有可用连接。检查服务器后,它似乎也保留了打开的 Apache 连接。
所以我的问题是为什么要让这些连接保持打开状态,我能做些什么来解决它?否则,当网站加载时,网站会像糖蜜一样缓慢。谢谢。
mysql 连接很可能是副作用。我这么说主要是因为如果你看到大量的 apache 进程也在运行 EE,它会进入一个阶段,它已经开始打开与 MySQL 的连接,但正在等待 apache/php 端的某些东西完成并关闭联系。
您可能想在 EE 中打开模板调试,点击公共站点上加载缓慢的页面之一,但请确保您是登录的超级管理员。您应该看到 EE 为构建该页面所做的每个操作、花费的时间以及 php 内存使用量。您也许能够识别标签、第三方插件或导致 apache 端速度变慢的东西,这些东西也会导致 MySQL 中打开连接的副作用。
在查看时我应该开始的东西:显示完整的进程列表;在 mysql 中,列出的进程是否显示长时间运行的查询,或者它们全部或大部分都列为“睡眠”。如果睡觉,他们很可能会陷入上述情况。
在调用 RSS 提要等外部数据源、Twitter 等外部 API 等时也看到过这种情况,但同样可能是在 EE 模板端运行时间过长导致 EE 保持这些 mysql 连接打开直到 EE /php 终于完成并准备正确关闭连接。
在 EE 控制面板中,转到Admin → System Administration → Database Settings,并确保Persistent Database Connection设置为No。
您还需要确保/system/exoressionengine/config/config.php文件$config['pconnect']
中没有 for 行。