这两天在和第三方联调接口时发现了一个很奇怪的现象,在项目发布到服务器后,一个有调用第三方接口的接口响应时间特别长,最慢的时候需要20多秒,测试下来平均也要5s左右。这个接口除了一个调用第三方接口获取数据的操作,也没有其他耗时操作。这个时候首先怀疑是对方接口的问题,于是就把情况反映给了对方。几十分钟后对方回复我说他们跑了两组每组10次间隔5ms的测试,测试下来接口响应平均在700~800ms之间。这就让我更觉得奇怪,于是我用工具在自己的电脑试了下,前后调用接口十几次,平均下来也和他们说的一样,700ms左右,这个时候我就怀疑是服务器哪里有问题。

        于是登录服务器,检查各种配置。top看各种指标,free看内存,ping地址,甚至修改nginx配置,都没什么鸟用。这期间也想到有没有办法可以在linux上通过命令查看请求网址的时间呢?有问题找度娘,一搜发现熟知的curl命令就可以查看请求时间。(ಥ_ಥ),之前也用过该命令,不过以往都是用它来测试网站的连通性。

        下面就介绍下curl命令查看请求时间。

        首先创建curl.txt文件,在文件内容如下:

\n
    time_namelookup:  %{time_namelookup}\n
    time_connect:  %{time_connect}\n
    time_appconnect:  %{time_appconnect}\n
    time_pretransfer:  %{time_pretransfer}\n
    time_redirect:  %{time_redirect}\n
    time_starttransfer:  %{time_starttransfer}\n
                    ----------\n
    time_total:  %{time_total}\n
\n

        然后使用下面命令就可以在控制台中打印出响应时间信息。

curl -w "@curl.txt" -o /dev/null -s -d "username=aaa&password=bbb" https://www.baidu.com
time_namelookup:  0.004242
    time_connect:  0.045247
    time_appconnect:  0.161571
    time_pretransfer:  0.161625
    time_redirect:  0.000000
    time_starttransfer:  0.210044
                    ----------
    time_total:  0.210124

        参数说明

        -w:从文件中读取打印的信息格式

        -o:输出全部信息

        -s:不打印进度条

        -d:请求参数

        在使用curl命令打印了请求服务器的时间后发现平均耗时也都是在5s左右,故此确实不是项目的问题。于是搜索引擎搜索关键字‘centos curl 执行慢’,发现网上大多说明是DNS服务器的原因,需要修改/etc/resolv.conf文件中dns服务器ip地址。在修改配置后,再使用curl命令查看执行时间,果然时间一下降了下来,访问接口恢复了正常。

        

centos 传文件 tcp centos传输文件太慢_操作系统