• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

linux – CLI里CURL访问某URL速度正常,PHP环境下却访问很慢?

php 搞代码 3年前 (2022-01-25) 22次浏览 已收录 0个评论

情况是在一个PHP开发的web产品里,使用Guzzle6这个库作为HTTP Client来访问外部接口,现在发现访问外部接口时速度很慢,要15秒才能收到响应。而在CLI里直接CURL这个外部接口,响应是很快的。
自己试图解决这个问题,发现现象如下:
1.首先Guzzle应该也是使用CURL来访问的,这是从Guzzle偶尔报出的curl error中看出的。偶尔会出CURLE_COULDNT_RESOLVE_HOST这样的错误。

2.接着判断是不是DNS的问题,直接换用ip访问,结果是一样的。

3.接着试了两个CURL的两个选项,一个是超时设置,一个是考虑是不是IPV6的影响,对应到Guzzle分别是:

<code>['connect_timeout' => 2, 'curl' => [        CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4  ],]</code>

依然没有变化。

4.将被访问接口host换成baidu,qq,taobao这些,发现此时大部分访问速度正常,qq除外。。也是很慢

5.访问时长目前看来都是15秒。最后对php-fpm进行strace,抽取出主要的内容如下:

<code>5519  22:30:08.260401 connect(7, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("121.xx.xx.xx")}, 16) = -1 EINPROGRESS (Operation now in progress)5519  22:30:08.260744 clock_gettime(CLOCK_MONOTONIC, {278258, 519214625}) = 05519  22:30:08.260853 poll([{fd=7, events=POLLOUT|POLLWRNORM}], 1, 149999) = 1 ([{fd=7, revents=POLLOUT|POLLWRNORM}])5519  22:30:08.286791 getsockopt(7, SOL_SOCKET, SO_ERROR, [0], [4]) = 05519  22:30:08.286851 clock_gettime(CLOCK_MONOTONIC, {278258, 545285059}) = 05519  22:30:08.286891 clock_gettime(CLOCK_MONOTONIC, {278258, 545323358}) = 05519  22:30:08.286926 clock_gettime(CLOCK_MONOTONIC, {278258, 545358858}) = 05519  22:30:08.286962 clock_gettime(CLOCK_MONOTONIC, {278258, 545394658}) = 05519  22:30:08.286997 clock_gettime(CLOCK_MONOTONIC, {278258, 545429558}) = 05519  22:30:08.287055 sendto(7, "GET /v1/xxx/xxx HTTP/1.1"..., 110, MSG_NOSIGNAL, NULL, 0) = 1105519  22:30:08.287206 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)5519  22:30:08.287248 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)5519  22:30:08.287284 clock_gettime(CLOCK_MONOTONIC, {278258, 545716856}) = 05519  22:30:08.287350 clock_gettime(CLOCK_MONOTONIC, {278258, 545782755}) = 05519  22:30:08.287388 clock_gettime(CLOCK_MONOTONIC, {278258, 545820755}) = 05519  22:30:08.287471 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000 ....5519  22:30:09.288586  ) = 0 (Timeout)5519  22:30:09.288678 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)5519  22:30:09.288727 clock_gettime(CLOCK_MONOTONIC, {278259, 547161322}) = 05519  22:30:09.288767 clock_gettime(CLOCK_MONOTONIC, {278259, 547199920}) = 05519  22:30:09.288806 clock_gettime(CLOCK_MONOTONIC, {278259, 547239318}) = 05519  22:30:09.288842 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000 ...5519  22:30:10.289957  ) = 0 (Timeout)5519  22:30:10.290024 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)5519  22:30:10.290070 clock_gettime(CLOCK_MONOTONIC, {278260, 548504637}) = 05519  22:30:10.290110 clock_gettime(CLOCK_MONOTONIC, {278260, 548542537}) = 05519  22:30:10.290149 clock_gettime(CLOCK_MONOTONIC, {278260, 548581437}) = 05519  22:30:10.290184 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000 ...一直持续到第15秒接受到响应5519  22:30:23.309074  ) = 0 (Timeout)5519  22:30:23.309151 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)5519  22:30:23.309210 clock_gettime(CLOCK_MONOTONIC, {278273, 567644629}) = 05519  22:30:23.309250 clock_gettime(CLOCK_MONOTONIC, {278273, 567682629}) = 05519  22:30:23.309289 clock_gettime(CLOCK_MONOTONIC, {278273, 567721628}) = 05519  22:30:23.309324 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 1 ([{fd=7, revents=POLLIN|POLLRDNORM}])5519  22:30:23.386517 poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd<div style="color:transparent">!本文来源gaodai.ma#com搞#代!码(网</div><em>搞gaodaima代码</em>=7, revents=POLLIN|POLLRDNORM}])5519  22:30:23.386578 recvfrom(7, "HTTP/1.1 200 OK\r\nServer: XXX"..., 16384, 0, NULL, NULL) = 18375519  22:30:23.386676 clock_gettime(CLOCK_MONOTONIC, {278273, 645121620}) = 0</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:linux – CLI里CURL访问某URL速度正常,PHP环境下却访问很慢?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址