我使用GAE作为我的小型服务。我每天只有3或4个客户,而且从不在同一时间。 我的服务是用Java编写的,具有spring MVC,spring security和objectify。 因此启动时间可能需要15到20秒。
为了避免我的客户端的启动延迟,我激活计费并将min idle instance设置为1(最大值为1)。 但即使使用此配置,有时我的客户也必须等待15秒才能获得第一次请求。
正如您在我的日志中看到的一个预热请求(从未使用过)之后,客户端启动了一个新实例(以后从未使用过):
示例1:
2012-09-10 23:23:31.442 /myIndex.do 200 18997ms 15kb Mozilla
x.x.x.x - - [10/Sep/2012:14:23:31 -0700] "GET /myIndex.do HTTP/1.1" 200 15048 - "Mozilla" "www.mysite.fr" ms=18997 cpu_ms=10442 cpm_usd=0.001682 loading_request=1 instance=00c61b117c2e937c04807734919256d8a5cee8
2012-09-10 23:05:05.260 /_ah/warmup 200 14225ms 0kb
0.1.0.3 - - [10/Sep/2012:14:05:05 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mywebsite.appspot.com" ms=14225 cpu_ms=8969 loading_request=1 instance=00c61b117c10680b3f12b4c8f80f7b7191ce8bab
示例2:
2012-08-31 18:51:16.096 /myIndex.do 200 14676ms 14kb Mozilla
x.x.x.x - - [31/Aug/2012:09:51:16 -0700] "GET /myIndex.do HTTP/1.1" 200 14954 "http://www.mysite.fr/myIndex.do" "Mozilla" "www.mysite.fr" ms=14676 cpu_ms=8514 cpm_usd=0.001671 loading_request=1 pending_ms=1022 instance=00c61b117cf69060fbcfbfe9dbd6ed735b869817
2012-08-31 18:39:43.895 /_ah/warmup 200 19812ms 0kb
0.1.0.3 - - [31/Aug/2012:09:39:43 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mysite.appspot.com" ms=19812 cpu_ms=10243 loading_request=1 instance=00c61b117c1d4303f8698a615149d5a40dcac7
我担心我已经遇到了4个客户的这类问题:/
并且还发现了类似的问题http://code.google.com/p/googleappengine/issues/detail?id=7865
任何人都可以确认这两个问题是否相关?
Thx
塞缪尔
答案 0 :(得分:0)
我不确定我能否正确回答您的问题,但我会尽力让您走上正确的道路。
在将“请求”发送到您的应用程序实例之前,应用程序服务器会调用预热请求。您可以调用/初始化尽可能多的代码,以便将其加载到内存中。当“实时”请求命中您的应用程序时,它会迅速执行。查看您的日志,对/myIndex.do的请求需要14秒才能执行。按照任何标准,这都很长。
这使我建议如下: