微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检测PHP目前使用mysql数据库的压力

我正在开发一个大型Web应用程序,并希望它根据与数据库当前所处压力相关的因素进行更改.

我不确定最准确/最有效/最简单的是什么.我正在考虑当前连接数或服务器响应时间或cpu使用量?

什么是最适合和可能的?

谢谢

有趣的问题.你真正想要的是一种让 PHPMysqL服务器提出两个问题的方法

服务器,你几乎使用所有的cpu容量?

服务器,您使用几乎所有的磁盘IO容量?

根据答案,我想你想简化你的PHP Web应用程序的工作……可能通过消除某种搜索功能,或者更积极地缓存一些数据.

如果你的(linux或bsd)MysqL服务器有一个shell,你可以通过观察这两个命令的输出来回答你的两个问题.

sar -u 1 10     # the %idle column tells you about unused cpu cycles
   sar -d 1 10     # the %util column tells you which disks are busy and how busy.

但是,没有甜蜜的小查询MysqL中的数据提取到您的应用程序.

编辑:一种可能性是编写一些PERL黑客或其他在您的服务器上运行的简单程序,连接到本地数据库,并且每隔一段时间(每分钟一次)确定%idle和%util,并更新数据库中的小排一行表.如果你关心的话,你也可以毫不费力地将你的磁盘装满的东西添加到这个表中.然后您的程序可以查询此表.这是MEMORY访问方法的理想用途.无论如何,请保持简单:您不希望您的监控对您的服务器造成压力.

您可以从客户那里获得的第二个最佳技巧.

发出命令SHOW PROCESSLIST FULL,计算Command为“Query”的行数(MysqL进程),如果你有很多它们认为它是一个高工作负载.

您还可以为具有状态Query的进程添加时间值,并使用该值的高值作为阈值.

编辑:如果你在MysqL 5服务器上运行,并且你的服务器帐户可以访问MysqL提供的information_schema,你可以直接使用查询获取我提到的过程数据:

SELECT (COUNT(*)-1) P.QUERYCOUNT,SUM(P.TIME) QUERYTIME
FROM information_schema.PROCESSLIST P
WHERE P.COMMAND = 'Query'

COUNT(*) – 1:因为上面的查询本身被视为查询.

您需要调整阈值以使其在生产中正常工作.

数据库服务器无法跟上时,最好让PHP Web应用程序卸载.不过,更好的想法是识别长时间运行的查询并对其进行优化.

原文地址:https://www.jb51.cc/php/136699.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐