【发布时间】:2011-06-18 22:40:21
【问题描述】:
我有一个在 nginx/passenger 上运行的生产 ruby sinatra 应用程序,我经常看到请求莫名其妙地停滞不前。我编写了一个脚本,每十秒调用一次我的机器集群上的乘客状态,并将结果绘制在图表上。这是我看到的:
蓝线显示全局队列等待不断飙升至 60。这是 4 台机器的平均值,所以当蓝线达到 60 时,意味着每台机器都已满员。我将当前的 Passenger_max_pool_size 设置为 20,因此它达到了最大池大小的 3 倍,然后可能会丢弃后续请求。
我的应用程序依赖于两个关键的外部资源——一个 Amazon RDS mysql 后端和一个 Redis 实例。也许其中之一是周期性地变得缓慢或反应迟钝,从而导致这种行为?
谁能告诉我如何获取堆栈跟踪以查看这里的瓶颈是 Amazon RDS、Redis 还是其他东西?
谢谢!
【问题讨论】: