我正在寻找一种方法来仅根据它发回的页面找出服务器已经启动了多长时间。比如,如果我访问 www.google.com,是否有某种响应头变量告诉我连接的服务器已经启动了多长时间?我怀疑有,但从来没有伤害过问...
5 回答
不,因为 HTTP 作为一种协议,并不真正关心。在任何情况下,对 google.com 的 50 个不同请求最终可能会出现在 50 个不同的服务器上。
如果您想要该信息,则需要将其构建到应用程序中,例如“ http://google.com/uptime ”,它将提供 Google 的关于它已运行多长时间的视图 - Google 可能会将其作为静态页面显示他们成立的日期:-)。
不是来自 HTTP。
但是,可以通过询问接收到的 TCP 数据包来发现许多操作系统的正常运行时间。查看RFC 1323了解更多信息。我相信时间戳标头在每次事务中都会增加一些值,并在重新启动时重置为零。
警告:它不适用于所有操作系统,您必须随着时间的推移跟踪服务器以获得准确的正常运行时间数据。
Netcraft 是这样做的:请参阅此处了解模糊的描述:
这些报告中显示的“正常运行时间”是前端计算机或托管站点的计算机的“自上次重新启动以来的时间”。我们可以通过查看我们在采样站点时记录的数据来检测这一点。我们可以检测托管网站的响应计算机已经运行了多长时间,并且通过长时间记录这些样本,我们可以绘制图表,将其显示为一条线。请注意,这与站点的可用性不同。
不幸的是,真的没有。您可以通过从相关服务器请求 HTTP 标头来自行检查。例如,从 google.com,您将获得:
HTTP/1.0 200 OK
Cache-Control: private, max-age=0
Date: Mon, 08 Jun 2009 03:08:11 GMT
Expires: -1
Content-Type: text/html; charset=UTF-8
Server: gws
检查 HTTP 标头的在线工具:
http://network-tools.com/default.asp?prog=httphead&host=www.google.com
现在,如果它是您自己的服务器,您可以创建一个脚本来报告正常运行时间,但我认为这不是您想要的。
补充一下 Pax 所说的,有许多第三方服务通过尝试以特定时间间隔访问服务器资源来监控站点的正常运行时间。他们在自己的数据库中维护一些历史记录,然后在这些资源无法访问时向您报告。
我使用Uptime Party来监控服务器。