2017-02-19 48 views
1

我的应用程序控制器接受来自第三方API(webhooks)的请求,但是当它变成400 RPM时,我的网站停止运行(客户太多)。我能用它做什么?用Rails控制器接受很多请求的正确方法是什么?

class CallbacksController < ApplicationController 
def acceptor 
    if params['type'] == 'confirmation' # this type is rare. only when client switches on callback 
     group_setting = GroupSetting.find_by_callback_token(params[:callback_token]) 
     if group_setting 
     group_setting.update_attribute(:use_callback, true) 
     GroupSetting.new.callback_start(group_setting.group, group_setting.user) 
     render text: group_setting.response_string 
     else 
     render text:'ok' 
     end 
    else 
     CallbackWorker.perform_async(params[:callback_token], params['type'], 
             params['group_id'], params['object'], 
             params['secret']) 
     render text:'ok' 
    end 
    end 
end 

回答

0

在我看来,你有一个web服务器线程的瓶颈。你能指定你使用的服务器吗?你能制作Apache Benchmark并发布结果吗?也许有关设置的更多信息可能会有所帮助。

如果您使用的是WEBrick,我会建议您尝试使用PUMA

我也建议您查看Passenger,它可以轻松地与NGINX或Unicorn集成,可以帮助您平衡请求的负载平衡。

+0

也许你是对的。我的情况是Passenger + Nginx。我知道Passenger的最大连接数限制为100,但在开始阻止新网站访问者之前,该网站变得非常缓慢。那么在我的情况下显示什么? – nobilik

相关问题