一尘不染

AppEngine响应时间差异

tomcat

我正在考虑使用AppEngine部署我正在开发的webapp。在对AppEngine平台进行调查的过程中,我一直在检查简单请求的响应时间。为此,我编写了一个简单的PING
servlet:

@SuppressWarnings("serial")
public class Ping extends HttpServlet
{
  @Override
  public void doGet(@SuppressWarnings("unused") HttpServletRequest xiReq,
                    HttpServletResponse xiResp)
                    throws IOException
  {
    xiResp.setContentType("text/plain");
    xiResp.getWriter().println("PONG");
  }
}

然后,我编写了一个Java程序来每秒向该Servlet发出请求,并确定完成该请求所花费的时间。获取页面内容使用以下代码。

private static String getPageContent(String url) throws IOException {
  String result = null;
  URL reqURL = new URL(url);
  URLConnection connection = reqURL.openConnection();
  connection.setConnectTimeout(30 * 1000);
  connection.setReadTimeout(30 * 3000);
  InputStream webStream =  connection.getInputStream();
  BufferedReader reader = new BufferedReader(new InputStreamReader(webStream));
  result = reader.readLine();
  reader.close();
  return result;
}

我的监控脚本每3分钟以以下格式输出数据:

date,num_reqs,num_failedreqs,avg_reqtime,num_normreqs,avg_normreqtime,num_latereqs,avg_latereqtime

normrequest是指所有花费少于500ms来完成Latereqs的请求,都是花费超过500ms来完成failreqs的请求,是那些在下载期间或接收到的内容不等于“
PONG”时抛出IO异常的请求。

我最后20分钟的输出如下:

Thu Nov 25 10:04:01 GMT 2010,300,0,186,295,171,5,1093
Thu Nov 25 10:09:28 GMT 2010,300,0,191,292,173,8,842
Thu Nov 25 10:14:52 GMT 2010,300,0,184,295,167,5,1177
Thu Nov 25 10:20:15 GMT 2010,300,0,182,294,168,6,876
Thu Nov 25 10:25:46 GMT 2010,300,0,172,298,167,2,827

这表明在每5分钟内完成2到8个“延迟”请求,平均需要827到1177毫秒之间才能完成。

该结果与在Amazon EC2上运行的微实例上针对相同servlet运行的同一时期的以下输出进行比较。

Thu Nov 25 10:03:53 GMT 2010,300,0,177,300,177,0,0
Thu Nov 25 10:09:20 GMT 2010,300,0,179,299,178,1,583
Thu Nov 25 10:14:43 GMT 2010,300,0,176,299,175,1,545
Thu Nov 25 10:20:07 GMT 2010,300,0,176,299,175,1,531
Thu Nov 25 10:25:37 GMT 2010,300,0,181,298,178,2,669

这表明“迟来”的请求要少得多,而这些缓慢的请求的响应时间要短得多。

我正在从英国的服务器发出请求。我的Amazon EC2实例在“美国东部”运行。我不知道Google在哪里运行我的AppEngine实例。

我可以做些什么来改善AppEngine响应时间的一致性,还是我看到的AppEngine差异正常?


阅读 208

收藏
2020-06-16

共1个答案

一尘不染

据我所知,差异只是Google使用的网络属性。

2020-06-16