有没有办法找出实例被杀死的原因?

2024-04-08

我有一个小型 java 应用程序(2-10 qps),它设置为使用 F4_1G 实例自动缩放。有趣的是,虽然通常只有一个实例真正处于活动状态,但通常会创建两个实例。有时,几个小时后,一个实例就会消失,并立即被另外 1-2 个实例取代,相应的实例负载会导致延迟大幅增加。有什么方法可以找出实例被击落的原因吗?我没有看到任何 _ah/stop (我认为这对于自动缩放来说是正常的)或任何有关超出内存限制/移动到另一个系统或任何其他错误的消息,只是在发生更改时出现很大的延迟。此外,这些实例使用大约 250MB 内存,远小于 1GB。此外,延迟非常低(平均 80 毫秒)。

我还尝试了基本的扩展,其中重新启动的次数较少,但也有一些情况发生。我可以在那里看到 _ah/stop ,但仍然没有错误消息说明为什么它被停止(例如,正在日志中搜索“移动”“超出”“内存”)。

从我在堆栈上找到的内容来看,我无法真正看到它会在哪里弹出,它会在日志中,对吧?关于如何找出问题所在的任何其他想法?


几个月前我遇到了同样的问题。即使 CPU 和内存使用率在范围内,实例本身或其响应延迟没有特殊问题,也没有流量峰值,但实例仍被关闭并生成新实例。 经过大量观察和研究,我注意到实例在服务 50000 个请求(或更多)后重新启动。

在重新启动之前,实例所服务的请求数量似乎有一个未记录的硬性限制,在我的例子中为 50000(应用程序引擎 java 标准上的 F4 或 F4_1G 实例)。其他人也得出了同样的结论(参见here https://groups.google.com/forum/#!topic/google-appengine/fF8DO8iQmqw例如)。

两年后对你来说可能为时已晚,但我希望这对将来可能会来到这里的其他人有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法找出实例被杀死的原因? 的相关文章

随机推荐