【发布时间】:2014-12-09 18:31:02
【问题描述】:
我有安卓客户端和谷歌应用引擎 java 服务器。尽管我看到了预热请求,但对我的端点的第一个请求(有时是 2-3 个请求)需要很长时间(8 - 20 秒甚至更多)。
这很烦人,因为另一个实例(我有 1 个常驻实例,我是唯一点击那里的用户,请求需要 100-200 毫秒,我每秒发送 1-3 个请求)可以在约 500 毫秒内处理此请求,但它会生成新实例,发出预热请求并将请求发送到新实例(即使我设置了 min_pending_latency = 10000)。示例:
I 2014-12-09 18:39:51.438 200 0 B 3657ms /_ah/warmup
I 2014-12-09 18:39:55.649 200 7.7 KB 8673ms /_ah/spi/com.sth.MyEndpoint.getMyEntity
I 2014-12-09 18:40:15.349 200 7.7 KB 9081ms /_ah/spi/com.sth.MyEndpoint.getMyEntity
I 2014-12-09 18:43:17.328 200 7.7 KB 135ms /_ah/spi/com.sth.MyEndpoint.getMyEntity
我不希望我的用户在几十秒内随机出现延迟。我读了页面:
https://cloud.google.com/appengine/docs/java/config/appconfig#Java_appengine_web_xml_Warmup_requests
有一些关于“使用自定义预热 servlet”的内容,但我仍然不知道如何预热端点......如果答案确实存在,请指出来,告诉我 确切的 我该怎么办...
这里有人找到解决方案了吗?意思是,我希望我的新实例在启动端点后开始处理请求,因此它将在正常时间为来自真实用户的第一个传入请求提供服务,如通常的 100 - 200 毫秒(或至少在 1 秒以下)。我该怎么做?
请帮忙 ! :)
[编辑]
我的 web.xml(它有帮助):
<?xml version="1.0" encoding="utf-8" standalone="no"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>services</param-name>
<param-value>com.sth.MyEndpoint</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
</web-app>
[编辑] 还有我的 appengine-web.xml:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>myappname</application>
<version>version4</version>
<threadsafe>true</threadsafe>
<precompilation-enabled>true</precompilation-enabled>
<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
</system-properties>
<automatic-scaling>
<min-idle-instances>1</min-idle-instances>
<max-idle-instances>1</max-idle-instances>
<min-pending-latency>10.0s</min-pending-latency>
<max-pending-latency>15.0s</max-pending-latency>
</automatic-scaling>
<warmup-requests-enabled>true</warmup-requests-enabled>
</appengine-web-app>
【问题讨论】:
-
请帮忙?这太痛苦了。这是一个例子,我做了 3 次请求,2x I 2014-12-14 22:05:46.901 200 361 B 184ms /_ah/spi/com.sth.MyEndpoint.attack I 2014-12-14 22:05:58.530 200 409 B 182ms /_ah/spi/com.sth.MyEndpoint.attack I 2014-12-14 22:06:02.638 200 0 B 4129ms /_ah/warmup I 2014-12-14 22:06:22.058 200 367 B 11220ms /_ah/spi/com.sth.MyEndpoint.attack
标签: java android google-cloud-endpoints google-app-engine