gpt4 book ai didi

mysql - PHP + MySQL 'DB connections' 减慢服务器速度

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:07 25 4
gpt4 key购买 nike

我有一个加载了 ajax 的脚本,它为每个访问者运行 2 个 mysql 语句(每秒约 100 个)。这是一个简单的 SELECTUPDATE 语句。

对于我的后端,我使用的是 AWS RDS。

我注意到我的网站今天出现故障,我看到日志中充满了以下...

PHP-FPM-5.5 错误日志:

[2014 年 6 月 11 日 17:18:47] 警告:[pool www] child 12203,脚本 '/var/www/track.php'(请求:“GET/track.php”)正在执行太慢(5.282239 秒),日志记录

慢日志

script_filename =/var/www/track.php。 [0x00007fcf11fda8f8] 执行()/var/www/html/track.php:53

在 RDS 中,我的图表如下所示:

enter image description here

enter image description here

您可以看到数据库连接变得非常高。

在这一点上,我有点困惑该怎么做才能防止这种情况发生。

我只能假设一些“备份”的东西,也许数据库服务器只用了几分之一秒的时间来响应?然后 PHP 基本上重载了,因为请求太快了(太忙“等待”),这反过来又开始关闭我的服务器。

我的 MySQL 语句使用的是 PHP-PDO。我尝试将 PDO::ATTR_TIMEOUT => 1 添加到我的 new PDO 对象,但我不知道这是否会解决它(或者即使它是否工作。 ..).

我的目标是不让我的服务器因为数据库服务器缓慢或无响应而被关闭。我需要 PHP ‘足够聪明’,不会因为 MySQL 响应速度不够快而等待很长时间或过载。

虽然这一切都是纯粹的猜想,也许它根本不是 RDS,并且 PHP 以某种方式得到了备份?我不太确定...

谢谢!

最佳答案

我在最近的项目中使用了 MySQL,但不能否认 MySQL 可能存在一些性能问题。

您可以尝试向您的数据库发送一个选择请求,如果它返回 true,您就可以更新该行。在这种情况下,每个用户和每个页面加载需要两个连接。因此,我建议您使用只需要来自脚本的一个连接的存储过程。在您的场景中使用存储过程可以将连接时间减半。

我的第二个解决方案是根据您需要的设置配置您的 my.conf。这里有一个在线工具可以帮助进行合适的配置 https://tools.percona.com/wizard .

MySQL 最多可以使用 40% 的系统资源进行日志记录,因此请尽量限制某些日志,例如访问日志、错误日志以及您可能正在使用的任何其他日志。

关于mysql - PHP + MySQL 'DB connections' 减慢服务器速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24171717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com