java - 如何分析 App Engine Java 上的实际内存使用情况?

标签 java google-app-engine memory

我有一个在自动扩展的 F1 实例(600 Mhz,128 MB RAM)上运行的 App Engine Java 应用程序。预热后,仪表板显示的每个实例的内存使用量保持在大约 220 MB。根据docs ,这包括“运行时开销”。

  • 我是否正确地假设这个数字反射(reflect)了最大 permgen 和堆大小,但不一定是实际使用的数字?我从未收到内存不足错误。
  • 在生产环境中分析内存使用情况的最佳方法是什么?尽管有 App Engine 的运行时限制,有没有办法执行堆转储?

使用例如 VisualVM 的本地分析无法提供准确的图片,因为它包括开发服务器、内存中的 Datastore 和 Memcache 版本等。总共添加了多达 8,000 个加载的类(包括开发服务器、我自己的类和大约 85 个库),生成的 permgen 大小为 50 MB,在完全垃圾回收后最小堆大小为 50 MB。

我的问题的一些背景知识:调度程序有时(通常在完成常规同步作业后的前几个请求期间)启动一个新实例来处理通常仅由一个实例处理的请求负载。在更多请求之后,所有请求将再次完全一致地路由到第一个实例。基于概述的调度程序规则集here ,我试图弄清楚这种行为是否可能是由于调度程序预测(临时)缺乏实例内存来处理额外的请求。

最佳答案

What is the best way to analyze the memory usage in the production environment? Is there a way to perform a heap dump despite App Engine's runtime restrictions?

没有什么好办法。检测工具没有得到很好的支持。

关于java - 如何分析 App Engine Java 上的实际内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782097/

相关文章:

java - 为什么这个与 lambda 相关的类型推断会失败?

python - Google App Engine 将字符串转换为(实体的)属性

c - Linux 中的文件洞和共享内存?

memory - 如果字段顺序不同,则结构具有不同的大小

java - Spring 4 @Service 和 @RequestScope

java - 不能在子类的构造函数中抛出异常

python-2.7 - HTTPException:URL 的 SSL 证书无效和/或丢失:https://accounts.google.com/o/oauth2/token

python - 如何在不将整个文件读入内存的情况下在python3.2中以相反的顺序读取文件?

Java列表设置方法

java - 即使放置新的根实体,应用程序引擎也会发生争用