我对Passenger和ajax调用有一些严重的性能问题。似乎每次我调用ajax时,都会启动一个新的ruby实例,而不是使用响应原始页面请求的ruby实例,这使得它非常慢。可以在短短几秒钟内发出多个ajax请求的事实并没有使情况变得更好。
我调用的操作本身相当慢(它生成一个PDF,通常需要5-10秒),但是当通过Ajax调用时,响应时间是1-3分钟!这在我的开发环境中没有问题,因为我使用的是一个单一的混合实例,但是Passenger在这里真的有麻烦。
我已经尝试了for this SO question提供的Apache/Passenger选项,但没有成功。
有谁遇到过类似的问题并找到了解决方法?
发布于 2010-07-22 14:43:26
实际上,答案就在问题中。问题在于,Passenger派生到许多新的应用程序实例,而不是使用现有的池。因此,解决此问题的一种方法是设置最大工作进程数:
PassengerMaxPoolSize 2这解决了我的问题,并将响应时间缩短到原始时间的10%-25%。
更新
一种更好的方法是限制可以处理单个用户的工作进程的数量。这是我最终使用的方法:
PassengerMaxInstancesPerApp 1发布于 2010-07-21 23:26:27
什么时候触发AJAX请求?也许它与页面加载重叠?
在触发AJAX请求之前,等待DOM load事件可能会有所帮助。
https://stackoverflow.com/questions/3264616
复制相似问题