我在具有 2vCores 和 2GB RAM 的 VPS 上运行 Play 框架应用程序和 Postgresql 服务器,并且遇到了内存问题。
我使用以下参数将播放应用程序限制为 1024MB:
jvm.memory=-Xmx1024m -XX:MaxPermSize=150m -verbosegc -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError
这为 Postgresql 和一些系统进程提供了 1024MB 的可用内存,但是我的播放应用程序的某些页面冻结了,我不明白为什么(这些页面通常从数据库加载大量数据,但对象本身很简单,不应该占用大量内存)。
当我出现这些冻结时,我的应用程序并不总是使用 JVM 分配的所有内存,所以我想知道是否不是 Postgresql 通过使用过多内存造成了这个问题。
确实,Postgresql 有多个进程(大约 20 个),其中大约 5 个进程每个占用 6% 的内存。
当我安装 Postgresql 时,我没有更改默认配置(我是 Postgresql 新手)。
您能告诉我,我的 Postgresql 理论是否合理吗?如果合理,我应该如何更改 Postgresql 设置(以及最终的播放应用程序设置),以便所有内容都针对我的 2GB RAM VPS 进行优化,并且不再出现冻结?