如何解决Phusion 乘客进程显示出非常不同的内存使用情况
以下是生产环境中 passenger-status
的输出:
* PID: 24388 Sessions: 0 Processed: 103069 Uptime: 2d 22h 47m 44s
cpu: 3% Memory : 1376M Last used: 19s
* PID: 2380 Sessions: 0 Processed: 2844 Uptime: 21h 6m 28s
cpu: 0% Memory : 575M Last used: 1m 4s ag
* PID: 4192 Sessions: 0 Processed: 44 Uptime: 5h 59m 21s
cpu: 0% Memory : 315M Last used: 7m 40s a
注意三个进程的内存消耗差异。这是正常的吗?或者这是否意味着我的应用程序正在泄漏内存,因此,内存使用量与每个进程提供的请求数量相关(如 docs 中所述,预计会出现“不平衡”)?>
PS:顺便说一句,这是一个 Ruby on Rails 应用。
解决方法
这正常吗?是的。
Passenger 将按照“自由”的优先顺序平衡实例之间的请求负载。在您的情况下(对于大多数情况),第一个实例提供最多的请求,因为它具有最高的优先级。如果实例 1 忙,则乘客将尝试实例 2,然后是实例 3,依此类推。
这是否意味着我的应用程序正在泄漏内存?我不了解您的代码库,但在此上下文中最有可能的答案是否定的。
应用程序的实例将根据加载到内存中的对象继续增长(到一定程度)。 Rails 使用自动加载,因此它在第一次使用之前不会加载对象(取决于配置)。像(类、模块、全局变量等)这样的常量将永远留在你的应用程序内存中,其他对象将在此过程中被垃圾收集(迟早)。这种组合很可能就是您所看到的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。