【问题标题】:how to check the load on network connection or DB server from PHP?如何从 PHP 检查网络连接或数据库服务器的负载?
【发布时间】:2010-12-23 13:13:32
【问题描述】:

我有两台服务器,X 是网络服务器 (PHP),Y 是数据库服务器 (MYSQL), 我如何监控 X 和 Y 之间的网络是否过载。 还有,有时候Y的反应很慢!!!如何检查来自 Web 服务器端(PHP 端)的负载,以查看 DB 服务器是否过载或这两个服务器之间的连接不能满足此负载??

感谢您的帮助

【问题讨论】:

  • 为什么要使用PHP?为什么不使用真正的监控解决方案(例如Nagios)?
  • 只是想知道最快的解决方案

标签: php mysql networking connection


【解决方案1】:

最快的方法是,通过SSH 登录机器并使用CLI 诸如htoptop 之类的工具来检查当前负载,但是如果您有多个执行不同任务的服务器,它会执行安装某种监控来收集有关负载和使用情况的指标和获取信息是有意义的,有很多复杂的工具可以用于此目的,例如 Ganglia http://ganglia.sourceforge.net/、Munin http://munin-monitoring.org/ 或如前所述的 Nagios。

【讨论】:

    【解决方案2】:

    好吧,一种选择是在 MySQLi 中指定一个超时子句并使用MySQLi::real_connect...这样如果它提前超时,您可以假设它已经关闭...这是一个超时为 1 秒的示例:

    $mysqli = mysqli_init();
    $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 1);
    if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
        // Connection timed out (most likely), so assume load too high
    }
    

    另一种选择是使用Nagios 之类的工具来监控有问题的服务器。然后在尝试连接之前编写一小段代码来检查 Nagios 的状态(就像读取日志文件一样简单)。

    如果您真的很担心/. 效果之类的事情,您可以保留一份纯 HTML 格式的网站副本,然后在网站速度变慢时切换到它(编写一个 cron 作业来检查服务器负载,如果它太高切换到它,如果它下降足够切换回来)。

    但是,我不得不问,你为什么要这样做?为什么不让 PHP 优雅地失败呢?解决负载问题比编写所有这些代码(这将增加负载本身)来尝试检测它更好。修复缓慢和低效的部分,您将不必担心这一切......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多