我正在尝试为我的应用程序分析一些API请求,以便隔离任何潜在的瓶颈 . 但是,我看到我的日志记录的一部分略有差异,所以我试图确保我没有遗漏任何东西 .
The Basic Setup
-
AWS Classic ELB(已启用交叉区域)
-
余额为2个AWS t2.micro实例(临时服务器)
-
ec2框正在运行PHP 7.1和Nginx .
-
有一个SSL证书,但它终止于ELB . 所以ELB通过端口80上的http连接到后端实例
-
实例位于私有子网中,并通过NAT网关连接到Internet
Gathering Data
-
我有请求时间被记录在应用程序本身,这些请求被发送到Loggly(因此一旦请求到达应用程序代码,我们得到一个开始时间,一旦响应已经发送到应用程序,我们得到一个结束时间)
-
AWS ELB访问日志
-
CURL请求启用
total_time
的给定 endpoints
The Results (for a given endpoint)
-
申请请求时间
-
我看到应用程序请求时间为 0.05-0.08 秒 . 这是发送给Loggly的数据
-
AWS ELB访问日志
-
这些日志提供3个数字:
-
请求处理时间: 0.00004 seconds
-
后端处理时间: 0.05 - 0.09 seconds
-
响应处理时间: 0.00004 seconds
-
CURL
-
现在,运行一个看起来大致如下的CURL命令:
curl -s -w "%{time_total}\n" -o /dev/null www.google.com
我收到了 total_time
的结果: ~ 0.17 - .5 seconds
因此,似乎应用程序日志和ELB访问日志显示类似的结果 . 但是,似乎通过CURL的整体请求时间,可以 ~ 3x - 6x slower
如果是这样的话,可能会导致什么?我的第一个想法是,它需要时间来连接到ELB,或者我们可能会对DNS解析感到不满 .
然后,我尝试使用Apache Benchmark进行一些基本测试,这似乎证实了某种连接问题 . 连接结果为** ~0.07 - 0.5秒**
但是,由于那些时间没有出现在AWS ELB访问日志中,我被引导相信这与DNS解析有关吗?如果是这样,我该如何进一步调查?
目前,我的域名在LiquidWeb上注册,并且具有指向AWS提供的ELB DNS名称的CNAME记录