java - 尽管定义了空闲实例,但前端实例仍在预热

标签 java google-app-engine

我有一个启用了计费功能的 AppEngine 应用程序。我还设置了 1 个空闲实例,并将挂起延迟设置为 500 毫秒。

问题是我得到了很多新的前端实例预热:

This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.

这令人惊讶,因为尽管我设置了一个空闲实例,但它通常会在几分钟没有 Activity 后发生。即使设置了 2 个空闲实例,问题也没有解决。

这给我们的客户带来了很大的挫败感。任何帮助将不胜感激。

谢谢, 吉拉德。

编辑:

附加日志:

2013-01-29 15:00:09.569 /gwtRequest 200 1169ms 0kb Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
I 2013-01-29 15:00:08.455 [s~my-appengine-app/5.364695570610280531].<stdout>: NamespaceFilter - namespace is: *******
I 2013-01-29 15:00:08.976 com.*.common.server.rf.LogServiceLayerDecorator invoke: Server RF: Calling functionB()
I 2013-01-29 15:00:08.985 com.*.common.server.apis.MyService functionB: MyService-functionB: statId: 95001; someBean-Id:950010000001666; someBean-o
I 2013-01-29 15:00:09.564 com.*.common.server.apis.MyService functionB: MyService-functionB-finish:
2013-01-29 15:00:08.198 /gwtRequest 200 15664ms 0kb Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
I 2013-01-29 14:59:59.928 com.google.inject.internal.util.$FinalizableReferenceQueue$SystemLoader loadFinalizer: Not allowed to access system class loader.
I 2013-01-29 14:59:59.957 com.google.inject.internal.util.$FinalizableReferenceQueue <init>: Failed to start reference finalizer thread. Reference cleanup will only occur when
I 2013-01-29 15:00:03.164 [s~my-appengine-app/5.364695570610280531].<stdout>: TRACE: Manifest file jar:file:/base/data/home/apps/s~my-appengine-app/5.364695570610280531
I 2013-01-29 15:00:03.166 [s~my-appengine-app/5.364695570610280531].<stdout>: INFO : Hibernate Validator 4.1.0.Final at org.hibernate.validator.util.Version.(Version.java:
I 2013-01-29 15:00:03.194 [s~my-appengine-app/5.364695570610280531].<stdout>: DEBUG: Found javax.persistence.PersistenceUtil on classpath. at org.hibernate.validator.engin
I 2013-01-29 15:00:03.199 [s~my-appengine-app/5.364695570610280531].<stdout>: INFO : Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResol
I 2013-01-29 15:00:03.209 [s~my-appengine-app/5.364695570610280531].<stdout>: DEBUG: No META-INF/validation.xml found. Using annotation based configuration only at org.hib
I 2013-01-29 15:00:03.860 [s~my-appengine-app/5.364695570610280531].<stdout>: NamespaceFilter - namespace is: *******
I 2013-01-29 15:00:07.796 com.*.common.server.rf.LogServiceLayerDecorator invoke: Server RF: Calling functionA()
I 2013-01-29 15:00:07.967 com.*.common.server.apis.MyService functionA: MyService-functionA: amountInCents: 1100; Id:-1799069631; statId:95001
I 2013-01-29 15:00:08.197 This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This requ
2013-01-29 14:49:01.044 /gwtRequest 200 740ms 0kb Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
I 2013-01-29 14:49:00.365 [s~my-appengine-app/5.364695570610280531].<stdout>: NamespaceFilter - namespace is: *******
I 2013-01-29 14:49:00.411 com.*.common.server.rf.LogServiceLayerDecorator invoke: Server RF: Calling functionB()
I 2013-01-29 14:49:00.425 com.*.common.server.apis.MyService functionB: MyService-functionB: statId: 95001; someBean-Id:950010000001665; someBean-o
I 2013-01-29 14:49:01.032 com.*.common.server.apis.MyService functionB: MyService-functionB-finish:

如您所见:

1) functionB() 在 14:49 被调用

2) 大约 10 分钟没有 Activity

3) functionA() 在 14:59:59 被调用

4) functionA() 导致生成一个新实例

5) 仅当对 functionA() 的调用结束时才会调用对 functionB() 的下一次调用

最佳答案

将延迟设置为更高的数字,一旦 idel 实例服务请求的时间超过您设置的延迟,就会生成一个新实例。

日志显示您有两个请求:一个花费了 740 毫秒,另一个花费了 15.6 秒,这意味着当 740 毫秒的请求开始时,已经有一个请求正在处理(15.6 秒的请求),这会导致一个新实例被处理。已加载。

关于java - 尽管定义了空闲实例,但前端实例仍在预热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585558/

相关文章:

Java泛型方法通过使用类型开关获取类型值

java - React Native : NoClassDefFoundError - android. support.v4.app.FragmentActivity

java - 如何使用 pojo 从数据存储中检索实体?

android - 错误 : cannot find symbol class GoogleAccountCredential

java - 我是否需要在使用它的每个微服务(模块)中或仅在根应用程序中定义数据存储索引?

sql - GAE Cloud SQL 和高复制数据存储

java - 在 JSF 2.0 应用程序中使用 RichFaces 4

java - 使用 selectMatchingAK 从备用索引获取选择列表会返回 "The RPC failed"错误

java - 如何 "export"另一个类中的上下文?

java - 警告 : No file found for:/sign