gpt4 book ai didi

PHP 检查最不繁忙的 MySQL 服务器

转载 作者:行者123 更新时间:2023-11-29 00:32:44 25 4
gpt4 key购买 nike

我正在使用 PHP 编写一个 BI 工具,它由一台 Linux + Apache + PHP 机器组成,提供报告和仪表板,其中包含从我们的 MySQL 数据库中获取的数据。数据库结构由一个主服务器(我无权访问)和两个从服务器组成,我可以对它们运行查询。这里的想法是,如果一个从站发生故障,平台可以继续从另一个读取数据。我计划使用 try/catch 从一台机器故障转移到另一台机器。

我的问题是,如果两个从服务器都启动了,那么有什么方法可以使用 PHP 检查哪个最不忙,然后将查询定向到这台机器以最佳地平衡两个服务器之间的负载?

我在这里四处寻找答案,令我惊讶的是答案如此之少,也许我遗漏了一些明显的东西。向正确的方向插入会很棒。

在此先感谢您的帮助,

詹姆斯

最佳答案

我不会使用您的 PHP 代码来选择从站。要么在所有查询之前将您的请求定向到哪里,要么不够智能,无法成为真正的负载均衡器。

首先,随机选择奴隶可能是一件好事。这可能是在奴隶之间实现最佳分工的好方法,但也有一些问题。

如果有一些极端的查询会削弱一个 slave,你可能不想在那里做更多的查询,如果有一个客户端喜欢 slave1 而不是 slave2,你可能需要对此进行调整,所以它不适合所有环境:在这种情况下,将您的(所有?)流量重定向到最佳机器的专用(IP 级)负载均衡器似乎是最佳选择。


如您所说,您可以使用 PHP 找出机器的当前负载。

if(file_exists("/proc/loadavg")) {
$load = file_get_contents("/proc/loadavg");
$load = explode(' ', $load);
}

但这仅适用于本地机器。要为远程机器获取此信息,您可以通过网络服务器公开这些值:您可以回显该文件的内容,或者更好一点,制作一个小型“网络服务”,返回 JSON 或 XML 或任何您喜欢的这些值。

关于PHP 检查最不繁忙的 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783107/

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