我有一个Spree网站运行下面的堆栈:
我最近从Spree 0.70.3升级,这也使Deface从0.7.x升级到0.8.0。 从那以后事情就非常不稳定了。
最近我们已经看到了一些CPU占用过程 ,这些过程在服务器上加载负载,并将整个过程扼杀在一起。 他们是Rack进程,看起来Passenger正在启动它们; 他们由site-runner用户拥有,该用户是拥有应用程序代码的非特许用户。 (Passenger自动运行站点代码作为拥有它的用户。)如果我重新启动Nginx并终止失控进程,它会有一段时间的帮助,但最终类似的进程会返回并重新陷入困境。
ETA:我现在正在查看passenger-status和passenger-memory-stats passenger-status ,这表明这些是Passenger的申请stream程。 如果它逃跑或挂起,我的应用程序必须有一个问题。
什么是我最好的select找出这是挂在哪里?
机架进程是运行您的站点代码而不是Passenger的应用程序服务器。 我怀疑最近的升级和所有常见的故障排除问题。 以下是您的系统上的请求。
user -> nginx -> passenger -> Rack process -> generates page
你的系统将有多个Rack进程,因为每个进程都是单线程的,一次只能处理一个请求。 乘客的工作是代理请求并将其发送到机架进程,并根据需要启动/停止/回收这些机架进程。 一般来说,根据应用程序的复杂程度,一个Rack进程将需要5-45秒才能启动,所以即使不提供请求,通常也会运行一些进程。