Kay*_*Kay 3 performance google-app-engine jmeter spring-boot
我已经在 Google App EngineFlexible 中部署了一个简单的 Spring boot 应用程序。该应用程序。有两个API,一个用于将用户数据添加到数据库中(xxx.appspot.com/add),另一个用于从数据库中获取所有用户数据(xxx.appspot.com/all)。
我想了解 GAE 如何针对负载进行扩展,因此使用 JMeter 创建了一个 100 个用户并发的负载,在 10 秒内提升,并在半秒延迟内永远调用这两个 API。虽然它运行良好一段时间(仅一个实例),但在 30 秒左右后开始失败,并出现“java.net.SocketException”或“服务器响应状态为 502”。
发生此错误后,当我尝试从浏览器访问相同的 API 时,它会显示:
错误:服务器错误
服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。
大约 30 分钟后,服务恢复正常,并且每当进行负载测试时,它都会重复上述相同的行为。我希望 GAE 能够根据传入的负载自动扩展来处理它,而无需任何停机时间(使用多个实例),而它只是崩溃或阻止服务(日志中没有任何信息)。我的 app.yaml 配置是,
runtime: java
env: flex
service: hello-service
automatic_scaling:
min_num_instances: 1
max_num_instances: 10
Run Code Online (Sandbox Code Playgroud)
我对这个有点困惑,任何帮助将不胜感激。提前致谢。
解决办法是增加资源配置,详情如下。
鉴于我没有设置资源参数,它默认为 CPU 和内存的预定义值。在本例中,默认内存设置为 0.6GB。App Engine Flex 实例使用大约 0.4GB 的开销进程。鉴于 Java 众所周知会消耗较高的内存,因此开销进程消耗的内存很可能超过大约 0.4GB 的值。现在,App Engine 中的实例由于多种原因(包括内存使用优化)而重新启动。这解释了为什么您的实例关闭并显示 Tomcat 正在启动(它们已重新启动)并由于 nginx 无法完成请求而最终出现 502 错误。修复上述问题即使不能完全消除 502,也可能会减少。
在我指定了 resources 属性并增加了 app.yaml 中的配置后,502 错误似乎消失了。
归档时间: |
|
查看次数: |
3786 次 |
最近记录: |