服务器响应时间较长

服务器响应时间较长

我们有一个高流量的网站,高峰时有1000并发用户,最低时有100用户同时访问。平均每天要40,000访问100,000一次。问题是有时加载速度非常慢(我们将这次称为灾难时间:) ),当我们尝试使用 加载网站时Firefox,它会显示waiting...(我尝试使用世界各地的许多提供商)

我们监控服务器灾难次、、CPU load都是Memory Usage正常的。此外,的慢查询日志MySQL没有任何查询1 secApache没有任何错误。iotop没有显示任何导致此灾难的因素。

有趣的是,灾难时间和高峰时间没有任何关系。有时灾难发生在300并发用户身上,有时又发生在不同的时间。我找不到它们之间的任何关系。

灾难发生时如何追踪数据包?我想知道这个灾难是我们的数据中心的故障(例如上游或防火墙)还是我们的服务器的故障(例如Apache配置、Web 应用程序或任何其他我不知道的故障)。

如需更多数据,只需添加评论,然后我会编辑我的问题以提供您需要回答的数据。

答案1

并发用户/访问量与系统的容量/性能无关 - 它只与并发连接以及这些请求正在执行的操作有关。

将请求响应时间添加到服务器日志中是一个开始 - 如果这些不能反映问题,则问题可能出在网络上。我注意到您在问题中没有提及您的网络服务器日志 - 您检查过它们吗?

您认为您的流量很大,而您的问题暗示您只有一台服务器。为什么?(多台服务器会增加此特定问题的复杂性,例如负载分配,但也会简化许多诊断,然而这对性能和可用性毫无影响)。

跟踪连接数和他们的状态还提供了诊断问题所需的重要数据。

灾难发生时如何追踪数据包?

使用数据包捕获程序 - 它可以运行在从客户端到服务器的任何地方。我使用 wireshark(适用于 Linux、MSWindows 和其他系统)

如果您提到您的服务器正在使用哪个版本/MPM 以及它在哪个操作系统上运行,那将会很有用。

答案2

如果你使用的是 Linux,则可以使用tcpdump,例如:

$ tcpdump dst port 80

但我认为这没什么用。我会尽量排除尽可能多的变量。我的第一个想法是这可能是网络问题。

尝试创建一个带有响应时间的 Apache 日志,如下所示:

LogFormat "\"%{%Y-%m-%d %H:%M:%S}t\" %V %m \"%U\" \"%q\" %{Content-Type}o %s %B %O %D" responsetime
CustomLog "/var/log/apache2/responsetime.log" responsetime

然后,尝试从同一交换机上的机器/服务器访问 Web 服务器。

如果这看起来正常,请尝试使用类似的方法time wget http://localhost/index.html -q --output-document=/dev/null在同一个盒子上执行此操作。

相关内容