gem的HTTParty和内置的Ruby Net :: HTTP似乎没有暴露HTTP请求中的时序细分。
例如,curl
暴露:
time_appconnect从开始到SSL / SSH / etc连接/握手到远程主机的时间(以秒为单位)已完成。 (在7.19.0中添加)
time_connect从开始到TCP连接到远程主机(或代理)的时间(以秒为单位)已完成。
time_namelookup从开始到名称解析完成所用的时间(以秒为单位)。
time_pretransfer从开始到文件传输即将开始所用的时间(以秒为单位)。这包括特定于所涉及的特定协议的所有预转移命令和协商。
time_redirect所有重定向步骤所花费的时间(以秒为单位)包括在最终事务启动之前进行名称查找,连接,预传输和传输。 time_redirect显示多个重定向的完整执行时间。 (在7.12.3中添加)
time_starttransfer从开始到第一个字节即将传输所用的时间(以秒为单位)。这包括time_pretransfer以及服务器计算结果所需的时间。
time_total完整操作持续的总时间(以秒为单位)。时间将以毫秒分辨率显示。
有没有办法从Ruby或gem中获取DNS,TLS,SSL和握手等时序?
答案 0 :(得分:2)
你应该使用Typhoeus,它是libcurl的Ruby包装器。 http://www.rubydoc.info/github/typhoeus/typhoeus/Typhoeus/Response
它将为您提供您在响应对象上寻找的时间;例如appconnect_time,connect_time,namelookup_time等。
答案 1 :(得分:0)
不,Net :: HTTP不会公开此类信息。
一种可能的(虽然不是很实用)解决方案是使用例如ruby-prof来配置脚本以获取每个方法调用的时间,并确定每个阶段的执行时间。