【问题标题】:GAE/Python every request caused a new processGAE/Python 每个请求都会导致一个新进程
【发布时间】:2012-11-27 23:34:35
【问题描述】:

当任何单个请求进入时,我都会收到此警告。似乎该进程将在处理请求后立即关闭。

由于无法发布图片,我将复制并粘贴一些日志。

2012-11-25 09:12:37.441 /task/process-block 200 1609ms 0kb AppEngine-Google; (+http://code.google.com/appengine)
I 2012-11-25 09:12:37.440 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...

2012-11-25 09:12:26.054 /task/process-block 200 2160ms 0kb AppEngine-Google; (+http://code.google.com/appengine)
I 2012-11-25 09:12:26.053 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...

2012-11-25 09:12:14.036 /task/process-block 200 3156ms 0kb AppEngine-Google; (+http://code.google.com/appengine)
I 2012-11-25 09:12:14.036 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...

据我了解,当没有请求进入时,一个处理应该至少停留 15 分钟,但上面的日志显示该进程被杀死的时间不超过 10 秒。目前我只能看到一个动态类型的实例(在我签出时我看不到任何正在运行的实例之前的几个小时),并且即使它完成了前一个实例的处理,该实例也不会响应请求。相反,将生成一个新实例并响应请求。

是bug还是设置问题?我的应用程序使用 python 2.7 线程安全,我将最大空闲实例设置为 1,将最小挂起延迟设置为 15.0s。

更新:

我将 Max Idle Instances 更改为 50,问题仍然存在。

【问题讨论】:

  • 这是在生产中还是在dev_appserver 服务器上?
  • @voscausa 不,这是一个免费的应用程序。我的其他免费应用没有这个问题
  • @bossylobster 它在生产服务器中
  • 它是否在请求似乎关闭之前完全处理了它? (即,客户是否得到了正确的响应,和/或输入是否正确处理)?如果没有,您是否有可能超出内存限制?
  • @ckchan 来自日志我可以说请求已完全处理。有时我可以看到一个实例可以服务于 6 个或更多请求(不是顺序的。这个实例可能服务于第 1、3、8、9 个,但其他请求将由其他新的一次性服务实例提供服务)而不会被关闭。

标签: python google-app-engine


【解决方案1】:

运行两天后,问题就消失了。被推入队列的任务是一项相当耗时的任务,因为它需要从互联网上检索一些数据,通常需要超过 1 秒。

现在任务的运行时间平均减少到200ms,因为它已经赶上了数据生产者,所以大部分时间它只是发现没有更多的数据需要处理并返回。

所以我猜当GAE收到一个请求时,它会首先预测这个请求是否可以在1秒内完成。如果答案是肯定的,GAE 将使用现有的流程来处理它;否则它将启动一个新进程并保留旧进程以处理其他短时请求。这可以解释为什么总是有一个新的进程,这也可以解释为什么某些实例有相当长的年龄但没有处理很多请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2016-08-29
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多