2017-02-19 6 views
1

私のアプリケーションコントローラはサードパーティのAPI(ウェブフック)からのリクエストを受け入れますが、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を試してみることをおすすめします。

NGINXまたはUnicornと簡単に統合できるPassengerをチェックすると、リクエストの負荷分散に役立ちます。

+0

あなたが正しいかもしれません。私の場合はPassenger + Nginxです。私は乗客が最大接続= 100の限界を持っていることを知っていますが、新しいサイト訪問者をブロックする前に、サイトは非常に遅くなります。だから私の場合に何を表示する必要がありますか? – nobilik

関連する問題