我看到一些网站显示消息说他们“超载”。不知道这是否与数据库的连接最大化。
这是以编程方式完成的吗?或者通过服务器设置?
答案 0 :(得分: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();
}