用于检查网页加载时间的简单程序或脚本

用于检查网页加载时间的简单程序或脚本

我正在寻找一个简单的程序或脚本,你给它一个 URL,它会执行以下操作:

  • 检查是否可以打开到该 URL 的连接并报告响应时间
  • 检查页面加载时间并报告该数字

  • 当网站无响应时报告一些错误代码或其他数字

  • 在以下情况后退出:连接失败、页面加载成功或用户指定的预定秒数后

我的目的是将此功能作为外部程序集成到 Zabbix。我在谷歌上搜索,但找不到。

答案1

你可以通过以下方式组合来做你想做的事情timewget命令-例如:
time wget -q http://www.google.com/

time将打印完成命令所花费的时间(以秒/秒的几分之一为单位)wget,并且整个混乱的返回代码将是的wget返回代码(0 =成功,非零表示各种失败)。

这可以进一步包装在适当的脚本中,以确定页面是否成功检索并生成适合 Zabbix 获取和使用的输出。

答案2

我使用以下脚本,其中的基本思想可能借鉴自其他地方。它使用 curl 统计数据:

estadistica () {
    local site=$1
    echo $site
    echo ${site} | sed -n 's/./-/gp'
    curl -w '
    Lookup time:\t%{time_namelookup} s
    Connect time:\t%{time_connect} s
    Pretransfer time:\t%{time_pretransfer} s
    Starttransfer time:\t%{time_starttransfer} s
    Size download:\t%{size_download} bytes
    Speed download:\t%{speed_download} bytes/s

    Total time:\t%{time_total} s
    ' -o /dev/null -s $site
    echo
    }

for i in ${@}; do
    estadistica $i
done

假设它被命名为 webstats;它的工作原理如下:

~/src$ bash webstats http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page http://www.google.com
http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page
-----------------------------------------------------------------------------------------------

    Lookup time:    0,009 s
    Connect time:   0,139 s
    Pretransfer time:   0,139 s
    Starttransfer time: 0,284 s
    Size download:  37298 bytes
    Speed download: 57153,000 bytes/s

    Total time: 0,653 s

http://www.google.com
---------------------

    Lookup time:    0,084 s
    Connect time:   0,147 s
    Pretransfer time:   0,147 s
    Starttransfer time: 0,218 s
    Size download:  218 bytes
    Speed download: 1000,000 bytes/s

    Total time: 0,218 s

如果出现问题,您可以知道(并因此告诉 zabbix),因为生成的数据不合逻辑:

~/src$ bash webstats http://thisdoesntexist
http://thisdoesntexist
----------------------

    Lookup time:    0,000 s
    Connect time:   0,000 s
    Pretransfer time:   0,000 s
    Starttransfer time: 0,000 s
    Size download:  0 bytes
    Speed download: 0,000 bytes/s

    Total time: 0,000 s

编辑:curl 的超时选项:

只是为了回答你的评论,curl 有一个超时选项;来自它的手册页:

   --connect-timeout <seconds>
          Maximum time in seconds that you allow  the  connection  to  the
          server  to  take.   This  only limits the connection phase, once
          curl has connected this option is of no more use. See  also  the
          -m/--max-time option.

答案3

http://phantomjs.org/会给你更多的实时性,因为它会加载页面的所有资源并执行 JS。语法非常简单(纯 JavaScript)

答案4

这:http://tools.pingdom.com/

或者,您可以很容易地编写一个简单的脚本来自己执行此操作并以特定的格式输出。

相关内容