我有一个小的java应用程序(2-10 qps),它被设置为与F4_1G实例自动缩放。有趣的是,虽然通常只有一个实例是真正活动的,但通常会创建两个实例。有时,几个小时后,一个实例消失,并立即被另一个1-2个实例替换,具有相应的实例负载,这会大大增加延迟。有没有办法找出实例被击落的原因?我没有看到任何_ah/stop (我认为这对于自动伸缩来说是正常的),也没有看到任何关于超过内存限制/移动到另一个系统或任何其他错误的消息,只是在发生更改时出现了很大的延迟。此外,实例使用了大约250MB的内存,这比1 1GB要少得多。此外,延迟非常低(平均为80ms)。
我还尝试了基本伸缩,重启次数较少,但也有一些情况发生。我可以在那里看到_ah/stop,但仍然没有错误消息说明它被停止的原因(例如,正在日志中搜索“移动”“超出”“内存”)。
从我在堆栈上可以找到的内容来看,我真的看不出它会在哪里弹出,它应该在日志中,对吧?对于如何找出问题所在,还有其他的想法吗?
发布于 2018-08-10 16:23:41
几个月前我也遇到过同样的问题。即使CPU和内存使用量在限制范围内,实例本身或其响应延迟也没有特别的问题,也没有流量峰值,实例仍在关闭并产生新实例。经过大量的观察和研究,我注意到实例在服务了50000个请求(或者说更多一点)之后正在重启。
在实例重启之前,似乎有一个未记录的硬请求数限制,在我的例子中是50000 (应用引擎java标准上的F4或F4_1G实例)。其他人也得出了同样的结论(例如,参见here )。
对于两年后的你来说,可能太晚了,但我希望这对将来可能会在这里结束的其他人有所帮助。
https://stackoverflow.com/questions/40421496
复制相似问题