数据库连接太多-上限为MySQL

时间:2019-02-14 作者:edtamil

我们运营着一个流量很大的博客,拥有约500名实时用户和10000篇帖子。我们在VPS上由self托管-16gb,4核,单独的mysql DB服务器-4gb,2核;两个SSD。托管服务器没有问题,但数据库服务器有时连接不足,尽管我们有超过312个最大连接上限。我们没有任何杂散插件,最长执行时间约为5分钟。任何人都不知道是什么导致了这个问题。peaks the maximum 312 connection-dbDatabase connections - peaks at working hours

More insights:我们可以关联的是,当我们的博客作者(最多10个)在我们的办公室工作时,在单一IP和缓慢中断的网络连接下,这个问题碰巧更频繁。发布高峰时间的问题比空闲时间的问题更频繁。

或者是数据库服务器的ram不足,最终导致连接中断。搜索引擎爬行通常消耗更多的Cpu,但机器人程序建立的连接不超过30 db,我们的服务器完全可以处理这些机器人程序。

当单个管理员长时间将帖子保持在编辑模式时,也可以防止

wp配置详细信息

“WP\\u MEMORY\\u LIMIT”,“256M;”AUTOSAVE\\u间隔\',160;最大执行时间500

我们的查询监视器有一些PHP 7.2折旧警告,虽然主题是稳定的,有些查询很慢,但帖子的修订对我们来说也是至关重要的。

1 个回复
SO网友:MikeNGarrett

这决不是一个明确的答案,但我有一些技巧,比评论允许的时间要长。

我担心最高执行时间太长。问题的根源可能与到DB的连接数无关,而更多地与这些连接存在的时间有关。

以下是一些需要研究的问题:

管理心跳(Admin Heartbeat)您同时提到了大量在线编辑器。这个Heartbeat API 根据您的设置和用户的活动,每15秒触发一次,并且每个用户每次都可以写入DB。

检查心跳间隔和存储的修订数。我看到您已经调整了自动保存间隔。

数据库更新触发的数据库写入对于mysql来说是最密集的。写入请求越多,尤其是在同一时间,负载越高。如果写入队列过长,可能会导致延迟打开的连接,最终会使可用连接达到最大。

更新或发布帖子时,除了更新帖子数据,还会发生什么

减少数据库负载

如果您还没有对象缓存存储解决方案,请准备一个对象缓存存储解决方案。RedisMemcache 奇迹般地减少数据库的负载。

chart of performance metrics where Redis cache is introduced and reduces overall load

检查您的选项autoload 选项表中的列指示是否在所有请求中从数据库读取选项。如果这个值很大,则可能会导致对数据库的请求更长。这是对象缓存可以提供帮助的另一个地方。这可能不会影响您的情况,但值得关注性能问题。

相关推荐

使用MySQL添加导航菜单项

我想使用PHP将Wordpress nav菜单项插入MySQL。我不认为我可以使用wp\\u create\\u nav\\u menu(),因为我需要从类别中构建一个初步菜单(超过100只猫!)然后,较低级别的管理员可以修改/调整/优化。我不认为wp\\u create\\u nav\\u menu()实际上更新了MySQL数据库。我当然能弄明白,但我只是想知道是否有人能给我一个先发制人的机会。Update wp_posts Update wp_term_relationships u