乘客 + 铁路 + 全局队列 - 您能将特定请求引导到特定队列吗?

乘客 + 铁路 + 全局队列 - 您能将特定请求引导到特定队列吗?

我有一个流量相对较少的网站,通常由 3 或 4 个乘客实例顺利提供服务。

然而,有时它会受到大量自动请求的冲击,这些请求可能需要 15-20 秒才能完成。这会导致全局队列备份,服务器对普通用户无响应:

----------- General information ------
max      = 18                                       
count    = 18                                       
active   = 17                                       
inactive = 1                                        
Waiting on global queue: 115                        

十五分钟后,重新启动 apache 清除队列后一切恢复正常:

----------- General information -----------
max      = 18
count    = 4
active   = 0
inactive = 4
Waiting on global queue: 0

----------- Application groups -----------
/apps/mailapp/current:
  App root: /apps/mailapp/current
  * PID: 31044   Sessions: 0    Processed: 275     Uptime: 14m 21s
  * PID: 31047   Sessions: 0    Processed: 314     Uptime: 14m 21s
  * PID: 31060   Sessions: 0    Processed: 284     Uptime: 14m 17s

我已将最大实例数增加到 18 个(大约是 VPS 上可以同时运行的实例数),这有一点帮助,但作用不大。我已尽可能优化请求(从 30 秒左右缩短到 15-20 秒)。

由于导致其备份的请求是自动的,因此无需特别及时地为它们提供服务。有什么方法可以留出一些仅用于处理此特定请求的乘客实例吗?(可能基于 URL 路径)。

答案1

我差不多已经修复了这个问题。

我已经使用 apache 创建了一个新的虚拟主机,并对最大实例数量进行了限制。

这在操作系统上被符号链接以指向原始应用程序。这样我就可以根据需要运行主应用程序,并运行任意数量的实例,但对符号链接的虚拟主机可以运行的实例数量有所限制。

这引发了与符号链接主机上的 CPU 使用率有关的一个相关问题:Apache/Passenger 和 cpulimit

相关内容