我对Passenger和ajax调用有一些严重的性能问题。似乎每次我进行ajax调用时,都会启动一个新的ruby实例而不是使用响应原始页面请求的实例,这使得它非常慢。可以在几秒钟内完成多个ajax请求的事实并不能使情况变得更好。
我调用的动作本身很慢(它生成一个PDF,通常需要5-10秒),但是当通过Ajax调用时,响应时间是1-3分钟!这在我的开发环境中没有问题,因为我使用的是单个mongrel实例,但是Passenger在这里确实遇到了麻烦。
我尝试了for this SO question提供的Apache / Passenger选项,但没有运气。
遇到类似问题并找到解决方法的任何人?
答案 0 :(得分:0)
你何时解雇AJAX请求?也许它与页面加载重叠?
在触发AJAX请求之前,等待DOM load
事件可能会有所帮助。
答案 1 :(得分:0)
实际上,答案在于问题。问题在于Passenger会产生许多新的应用程序实例,而不是使用现有的池。因此,解决此问题的一种方法是设置最大工作人数:
PassengerMaxPoolSize 2
这解决了我的问题,并将响应时间缩短到原始时间的10%-25%。
<强>更新强>
更好的方法是限制可以处理单个用户的工作人员数量。这是我最终使用的方法:
PassengerMaxInstancesPerApp 1