【发布时间】:2017-12-11 19:22:50
【问题描述】:
有一个 ruby 进程始终处于 50% 的 RAM 利用率,无论实例分配了多少 RAM。我在 flex 环境中运行 Node,其中包含一个简单的 express 应用程序,该应用程序通过 sequelize 连接到 Cloud SQL 实例。我尝试将 RAM 增加到 4GB,并且它继续保持 50% 的使用率。
看起来流程是
/opt/google-fluentd/embedded/bin/ruby -Eascii-8bit:ascii-8bit /usr/sbin/google-fluentd --log /var/log/google-fluentd/google-fluentd.log --under-supervisor
我经常用完 RAM,当我这样做时,实例会自动重启并抛出 502,直到它重新联机。只是似乎无法弄清楚为什么一个 ruby 进程会在我的节点实例上占用如此多的 RAM。
该服务的行为将与您预期的占用内存的高 RAM 使用进程一样;即当需要 RAM 时,它会刷新进程并允许分配该 RAM。问题是空间太小,以至于当我的节点服务器需要更多 RAM 并占用 50MB 时,它会在 RAM 被占用之前将服务器顶满并崩溃。
【问题讨论】:
-
有没有人可以解决这个问题?我们对 Golang 应用程序也有同样的问题; fluentd 会消耗内存,直到应用程序关闭。我怀疑 OOM 杀手正在关闭进程以为 fluentd 腾出空间,但我们无法确保 fluentd 消耗更少的内存
标签: google-app-engine google-cloud-platform fluentd google-appengine-node