【问题标题】:Impact of increasing MySQL wait_timeout增加 MySQL wait_timeout 的影响
【发布时间】:2015-06-15 20:40:21
【问题描述】:

我们目前为 MySQL 查询设置了一个低(?)超时,设置为 15 秒。因此,当我们的服务器处于压力之下时,我们会遇到很多超时。不幸的是,我们使用的 CMS 无法很好地处理这些超时,并且有时会缓存来自数据库的错误结果。我们也完全锁定在这个 CMS 中,所以我们不能轻易改变。

我一直在考虑提高 MySQL 的时间限制,看看这是否会改善这种情况。但是,我不确定更改此设置的后果:是否会导致客户端挂机时间过长、占用资源并最终使系统变得更慢?

更改此参数后,有什么好方法可以衡量 MySQL 的性能是好是坏?

另外,如果超时继续发生,处理它们的最佳方法是什么?我正在考虑为每个失败的查询抛出一个异常,并向我们的用户抛出一个大错误标志。我认为最好“快速失败”而不是显示部分正确的结果。

【问题讨论】:

  • 有多少用户使用您的网站?
  • 什么版本的 MySQL?什么内容管理系统?什么 MySQL 连接 API(PDO、mysqli)。
  • mysql Ver 14.14 Distrib 5.1.72。 CMS 是 TYPO3 4.5 的自定义版本。标准(已弃用)mysql 连接。
  • 每天 3000 到 5000 个会话,但其他一些网站托管在同一台服务器上,我没有这些网站的统计数据。
  • 是否可以在网络服务器前设置清漆?

标签: php mysql architecture


【解决方案1】:

看起来您确定 MySQL 查询处理超时,而不是 php 请求处理。您肯定知道,这是一个重要的区别。

在拥有天真的用户(即大多数用户!)的在线系统中,过早放弃请求并返回错误通常会适得其反。为什么?因为用户只是再试一次,点击,点击,点击,所以你的服务器容量被烧毁,提供垃圾而不是有用的结果。

查询超时比平时短了 15 秒。您应该尝试将其增加到一分钟。

我建议您尝试找出您的应用程序中的哪些查询需要很长时间。可能只有一些需要太长时间。您应该尝试优化这些请求,或者使它们更难使用。如果您增加超时时间,这些违规查询将开始显示在 slow query log 中。

【讨论】:

  • 我在日志中看到“MySQL 已经消失”,所以应该是 MySQL 而不是 PHP 请求处理,对吧?我想我会增加 wait_timeout 并看看有什么影响,但我不确定我应该测量什么以及如何测量。如果 MySQL 超时,则服务器必须被占用,但我不确定是什么。我查看了缓慢的日志,但我认为这比任何大罪犯都更像是一千个剪纸致死的案例。
猜你喜欢
  • 2020-02-02
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2010-11-17
相关资源
最近更新 更多