首页 » 工作 » 方法 » 正文

解决 Homestead + nfs 在 mac 上 pending 时间依旧过长的一个方法

发布者:站点默认
2020/01/25 浏览数(417) 分类:方法 解决 Homestead + nfs 在 mac 上 pending 时间依旧过长的一个方法已关闭评论

我的 /etc/hosts

192.168.10.10  api.local

症状:每个地址都要 pending 5 秒左右,而直接使用 Chrome 打开又很快。

网上给的方法是使用 nfs 类型的 folders,经测试无效,使用 curl 查到问题出在域名解析上,最终在这里找到了原因:

.local 结尾的主机名都将被视为Bonjour主机,而不是通过查询“网络”偏好设置中的DNS服务器条目。

解决办法:

不使用 .local 或者为 .local 追加一个 ipv6 的地址。ipv6 条目写在原 ipv4 记录的上边或下边都行。之后即使不使用 nfs 速度仍可以在几十毫秒内打开。

最终的 /etc/hosts

192.168.10.10  api.local
::2AEB:8229  api.local
# ::2AEB:8229 是 ipv6 版的 “192.168.10.10”

检查请求耗时:

reqTime.fish

function reqTime --description "检查 URL 请求的耗时" 
    if set -q argv[1]
        set format ''\
            '   time_namelookup: %{time_namelookup} DNS 域名解析,就是把域名转换成 ip 地址的过程\n'\
            '      time_connect: %{time_connect} TCP 连接建立的时间,就是三次握手的时间\n'\
            '   time_appconnect: %{time_appconnect} SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间\n'\
            'time_starttransfer: %{time_starttransfer} 从请求开始到第一个字节将要传输的时间\n'\
            '  time_pretransfer: %{time_pretransfer} 从请求开始到响应开始传输的时间\n'\
            '     time_redirect: %{time_redirect} 从开始到最后一个请求事务的时间\n'\
            '        time_total: %{time_total} 此次请求花费的全部时间\n'\
            '       TCP连接时间 = pretransfter - namelookup\n'\
            '    服务器处理时间 = starttransfter - pretransfer\n'\
            '      内容传输时间 = total - starttransfer'
        curl -o /dev/null -s -w "$format" $argv[1]
    else
        echo 'Usage: reqTime url'
    end
end

# 命令:
curl -o /dev/null -s -w "   time_namelookup: %{time_namelookup} DNS 域名解析,就是把域名转换成 ip 地址的过程\n\
      time_connect: %{time_connect} TCP 连接建立的时间,就是三次握手的时间\n\
   time_appconnect: %{time_appconnect} SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间\n\
time_starttransfer: %{time_starttransfer} 从请求开始到第一个字节将要传输的时间\n\
  time_pretransfer: %{time_pretransfer} 从请求开始到响应开始传输的时间\n\
     time_redirect: %{time_redirect} 从开始到最后一个请求事务的时间\n\
        time_total: %{time_total} 此次请求花费的全部时间\n\
       TCP连接时间 = pretransfter - namelookup\n\
    服务器处理时间 = starttransfter - pretransfer\n\
      内容传输时间 = total - starttransfer\n" http://api.local

# 输出:
#   time_namelookup: 5.130115 DNS 域名解析,就是把域名转换成 ip 地址的过程
#      time_connect: 5.131051 TCP 连接建立的时间,就是三次握手的时间
#   time_appconnect: 0.000000 SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
#time_starttransfer: 5.266109 从请求开始到第一个字节将要传输的时间
#  time_pretransfer: 5.131134 从请求开始到响应开始传输的时间
#     time_redirect: 0.000000 从开始到最后一个请求事务的时间
#        time_total: 5.266235 此次请求花费的全部时间
#       TCP连接时间 = pretransfter - namelookup
#    服务器处理时间 = starttransfter - pretransfer
#      内容传输时间 = total - starttransfer
点击返回顶部
  1. 留言
  2. 联系方式