2017-02-19 45 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

相關問題