我们在MySQL数据库上有一个MediaWiki wiki。 但是,其他应用程序也在访问MySQL。 目前我们最多可以连接100个数据库,其中MediaWiki允许10。
但是,在高峰期,超过10个用户试图同时访问wiki,这意味着他们可能会遇到MySQL连接错误。
具体来说,该消息说:
“数据库名称”有问题
抱歉! 本网站遇到技术问题。
尝试等待几分钟,然后重新加载。
(无法联系数据库服务器:未知错误(“mysql数据库名称”))
我的想法是限制在MediaWiki (例如在LocalSettings.php)尝试访问数据库的连接数。 然后人们不会收到错误信息 – 他们只能等待更长的时间。
有没有办法做到这一点? 还是有更好的解决scheme?
是的,在应用程序中,你需要精确地做你想要的东西。
我将花一点时间推荐一下:第一:看起来网站已经得到了足够的使用,它需要更多的数据库连接,而这种types的事情可能并不能真正帮助整体。 (例如,我只能假设MediaWiki没有被写入,这样就不必要地使用超出需要的额外连接)
我的基本想法是,如果可能的话,尽量给网站它需要的运作。 如果这会给共享的MySQL服务器带来麻烦,那么这个瓶颈可能就需要解决了。 无论是等待还是错误 ,无法连接到数据库将驱动一定数量的用户从网站,通常只是为他们创造一个负面的经验。
“简单”的解决scheme是将错误信息更改为更友好的方式,但这可能无法解决问题。
假设你不能提高10个连接的限制,那么应用程序可能需要被修改(甚至可能是相当广泛的),这样每个数据库连接尝试都被包装在代码中,这些代码捕获连接失败,等待一个预定的时间,然后再次尝试一定的次数。
你可能是幸运的,MediaWiki可能有这样的function,可以在其中configuration。如果有的话,更熟悉的人可以帮助。 如果DB访问代码是非常紧密的,另一个(更可能的)幸运点是,这样的解决scheme不会改变代码中的300多个地方来做这件事(这是一个耗时和加重的前景, 至less可以说)。
如果这些错误很less发生,我只会推荐这样的解决scheme。 如果这是经常发生的事情,它可能最终导致网站爬行,在那里它不断地等待/重试数据库连接…并最终仍然最终返回一个错误,无论如何。