EC2 上的延迟(等待 ttfb)

Jul*_*ige 5 configuration latency amazon-ec2 apache-2.4

我的应用程序正在抓取网站。我使用这个爬虫:

在我的开发环境中,延迟是可以接受的(3-4 秒),但在我的生产服务器(ec2 T2.micro Linux/Amazon)上有 30 秒的延迟(等待 ttfb)。

我在另一台服务器 (1&1) 中测试了相同的代码,延迟是可以接受的(3-4 秒)。所以问题不在代码内部,而是关于服务器配置。

我试过了 :

  • 检查 php conf (php.ini)
  • 将缓存添加到 php (Zend OPCache)
  • 添加 apache 2 变化:接受编码标头
  • 测试一个 t2.medium 实例
  • 更改我的实例的区域

我发现了这个类似的问题: PHP + Apache long wait time但我认为我的 ec2 卷是 EBS SSD,所以没有访问时间问题。

这个未解决的问题也是我的链接:https : //stackoverflow.com/questions/34299038/deployed-web-application-long-ajax-wait-ttfb-time

请求期间 vmstat 的摘录:

[ec2-user@ip-xxx-xx-xx-xx ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0   1580 534472  29696 240356    0    0     2    31   14   41  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   19   43  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   12   37  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   12   38  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   15   45  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   18   49  0  0 100  0  0   
 0  0   1580 534456  29696 240356    0    0     0     0   12   38  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   32   60  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   13   39  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   17   45  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     4   16   49  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   13   40  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   13   38  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   13   38  0  0 100  0  0   
 0  0   1580 533544  29696 240356    0    0     0     0   16   47  0  0 100  0  0   
 0  0   1580 533544  29700 240352    0    0     0     4   17   48  0  0 99  1  0    
 0  0   1580 533544  29700 240356    0    0     0     0   15   39  0  0 100  0  0   
 0  0   1580 533544  29700 240356    0    0     0     0   13   39  0  0 100  0  0   
 0  0   1580 533544  29700 240356    0    0     0     0   13   39  0  0 100  0  0   
 0  0   1580 533544  29700 240356    0    0     0     0   17   46  0  0 100  0  0   
 0  0   1580 533544  29700 240356    0    0     0     4   19   50  0  0 100  0  0   
 0  0   1580 533544  29700 240356    0    0     0     0   15   41  0  0 100  0  0
Run Code Online (Sandbox Code Playgroud)

[更新]
现在我知道这个延迟是由于 GuzzleHttp\Client 请求造成的:

(string) $this->httpClient->get($url)->getBody();
Run Code Online (Sandbox Code Playgroud)

我的安全组似乎没问题,出站允许所有,入站允许 HTTP。我的网络输出似乎也正常(当我请求时为 40,000 - 50,000 字节)。

我认为这应该是 mpm_prefork_module 的问题...

[更新 2]
从 SSH,如果我 curl http://google.fr,我没有延迟。如果我卷曲我的特定 url ( http://www.leboncoin.fr ),则延迟 > 30 秒。此 URL 特定于我的 AWS Ec2。