6

我用一个用 Java 编写的非常小的应用程序 试验了与这个问题相同的错误。一个 servlet 随机抛出一个 500 错误,描述中的错误代码为 121,但没有堆栈跟踪。

这是日志:

23/Jun/2013:01:37:11 -0700] "GET /premierQuestionnaire?annee=DES3&desc=false&installerLiberal=false&connaitAucun=on&roleNational=on&adhererEmblee=false HTTP/1.1" 500 0 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" "these-emilien.appspot.com" ms=569 cpu_ms=0 loading_request=1 exit_code=121 app_engine_release=1.8.1 instance=00c61b117ced60a7064344269a551e9083a10fac
I 2013-06-23 10:37:11.033
   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.
W 2013-06-23 10:37:11.033
   A problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. (Error code 121)

试图进入他提出的问题,但它们现在受到限制,因此无法访问。没有来自谷歌的通信。状态页面上没有错误或系统故障。

编辑 13:15: 我从工作人员那里找到了答案:

从 5 月 7 日星期一晚上 11 点左右开始,一直持续到 5 月 8 日星期二上午 11 点,一些 App Engine 应用程序在其应用程序日志中看到标记为“错误代码 121”的错误,这是由于不必要的实例终止造成的。

在此问题发布前一周,对 App Engine 调度程序底层的基础架构进行了更改,这破坏了我们的内存记帐系统。这个问题浮出水面的速度很慢,在我们现有的监控发现错误之前,并没有对我们的用户造成任何严重影响。为了解决这个问题,我们在 5 月 7 日推出了另一种内存记帐方法。这种替代方法高估了当前使用的内存量,我们的调度程序慢慢开始累积不正确的内存使用值。

高估导致 App Engine 调度程序错误地假设我们的基础架构处于持续的内存压力之下,进而导致实例过度终止,这在受影响的应用程序日志中显示为“错误代码 121”。在 5 月 8 日上午汇总用户报告的问题后,我们的可靠性团队确定了错误计算的根源,并推出了一个新的修复程序,纠正了内存使用率高估,并停止了不必要的终止。

我们认为在这种影响级别上修复问题的时间是不可接受的。我们正在为内存统计添加新的警报和工具,以防止将来再次发生类似问题并缩短我们的响应时间。应用程序代码或管理控制台设置不会影响您的应用程序是否受到此问题的影响,并且不需要更改您的代码或设置。

感谢您在此问题上的耐心等待,并对由此给您或您的客户带来的任何不便深表歉意。如果您认为您的付费应用程序违反了 SLA,请填写此表格。

此致 Christina Ilvento 代表 Google App Engine 团队

如果有人有一个想法或新闻,那将是一件好事......;)提前致谢

4

0 回答 0