1

我看到一些网站显示一条消息说它们“超载”。不知道这是否是与数据库的连接被最大化。

这是以编程方式完成的吗?还是通过服务器设置?

4

1 回答 1

4

一般来说,这通常是负载均衡器设置,而不是您直接在应用程序中编写的代码。负载均衡器偶尔会检查站点服务器的运行状况,并在检测到它们不可用或具有高延迟等情况时将流量路由到不同的服务器/站点。

将其编码到您的应用程序中意味着如果您的服务器负载过重并且应用程序速度变慢,那么检查它是否超载的代码也会变慢。如果这是有道理的。

编辑: 为了扩展如何使用负载均衡器完成此操作,您通常会在应用程序中有一个页面运行一些基本检查并在一切正常时返回 HTTP 200,如果事情不正常则返回 HTTP 503 . 然后负载均衡器会在您的服务器上点击该 URL 并检查响应代码以查看它是启动还是关闭(它检查的频率是您可以配置的)。如果它起来,酷。如果它关闭,它将开始在其他地方发送流量。

由于您控制支票页面,因此您可以根据需要编写支票。通常,您只需在那里进行一些快速的健全性检查。例如尝试连接到你的数据库,如果它给你一个“连接太多”的错误,然后返回一个 503 并且负载均衡器会知道你已经超载了。

如果您只关心数据库案例而不关心服务器负载或延迟等问题,您可以通过在连接到数据库时捕获任何错误并在发生这种情况时将用户重定向到静态页面来获得类似的结果。例如,

try
{
    $dbh = new PDO("mysql:host=localhost;dbname=whatever", $user, $pass);
}
catch (PDOException $e)
{
    header("Location: /site_overloaded_message.html"); exit();
}
于 2013-09-26T18:17:23.940 回答