微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Phusion 乘客进程显示出非常不同的内存使用情况

如何解决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 举报,一经查实,本站将立刻删除。