我想知道是否有人可以告诉我通过 Rack/Passenger 运行的 Rails 应用程序的正确行为,因为我看到生产系统上出现了一些异常行为,而这些行为从未正确运行过。
我的理解是,Passenger 将创建 Rack 实例以满足 Web 应用程序的需求。我遇到的问题是 Passenger 和 Rack 进程在运行几分钟后都会消失。在这种情况下,下一个请求将重新启动 Passenger 和 Rack,但这可能需要 10 秒以上。
当我查看进程列表时,我发现当一切运行正常时,我至少有一个“Rack: /my_application”实例。我还运行着“Passenger ApplicationSpawner”。
ApplicationSpawner 似乎会在大约 10 分钟后消失,Rack 实例有时也会消失。我有时会没有 Rack 进程或 ApplicationSpawner,因此下一个请求需要很长时间。
关于如何纠正这个问题,您有什么想法吗?
答案1
这是 Passenger 的预期行为(有人甚至说是期望行为)。它喜欢修剪未使用的应用服务器工作程序,以便在必要时将 RAM 用于其他用途。您可以使用以下命令调整 Passenger 的行为PassengerMinInstances
和/或PassengerPoolIdleTime
。