我有一个网站stream量相对较低,通常由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秒)。
由于引起备份的请求是自动的,因此不需要特别及时地为它们提供服务。 有没有什么办法可以为这个特殊的要求提供一些乘客实例呢? (也许基于urlpath)。
我有点解决这个问题。
我用apache创build了一个新的虚拟主机,限制了最大的实例数量。
这是symlink在操作系统上指向原来的应用程序。 这使我可以根据需要使用尽可能多的实例来运行主应用程序,但限制了符号链接的虚拟主机可以运行多less个实例。
这引起了一个相关的问题,关于symlink主机上的cpu-usage: Apache / Passenger和cpulimit