有没有一种方法可以在Ruby中获得HTTP请求的时间分解?



gem HTTParty和Ruby . Net::HTTP似乎并没有暴露HTTP请求中的时间分解。

例如,curl暴露:

time_appconnect从开始到SSL/SSH/etc连接/握手完成所花费的时间,以秒为单位。(在7.19.0添加)

time_connect从开始到TCP连接到远程主机(或代理)完成所花费的时间,以秒为单位。

time_namellookup从开始到名称解析完成所花费的时间,以秒为单位。

time_pretransfer从开始到文件传输即将开始所花费的时间,以秒为单位。这包括所有的预传输命令和特定于所涉及的特定协议的协商。

time_redirect在最终事务开始之前,所有重定向步骤(包括名称查找、连接、预传输和传输)所花费的时间(以秒为单位)。Time_redirect显示多个重定向的完整执行时间。(在7.12.3中添加)

time_starttransfer从开始到第一个字节即将被传输所花费的时间,以秒为单位。这包括time_pretransfer和服务器计算结果所需的时间。

time_total完整操作持续的总时间,单位为秒。时间将以毫秒级分辨率显示。

是否有一种方法可以从Ruby或gem获得DNS, TLS, SSL和握手等定时?

您应该使用Typhoeus,它是libcurl的Ruby包装器。http://www.rubydoc.info/github/typhoeus/typhoeus/Typhoeus/Response

它会给你在响应对象上寻找的时间;如appconnect_time、connect_time、namelookup_time等

不,Net::HTTP不公开这些信息。

一个可能的(虽然不是很实用)解决方案是使用ruby-prof来分析脚本,以获得每个方法调用的时间,并确定每个阶段的执行时间。

最新更新