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

웹 서버 스레드 병목 현상이있는 것 같습니다. 어떤 서버를 사용하고 있는지 지정할 수 있습니까? Apache Benchmark을 작성하고 결과를 게시 할 수 있습니까? 어쩌면 설정에 대한 정보가 도움이 될 수 있습니다.

WEBrick을 사용하는 경우 PUMA으로 시도하는 것이 좋습니다.

NGINX 또는 Unicorn과 쉽게 통합되는 Passenger을 확인하여 요청로드 균형 조정에 도움이 될 것을 제안합니다.

+0

아마도 당신이 옳습니다. 내 경우는 Passenger + Nginx입니다. 승객의 최대 연결 수는 100 개이지만 새로운 사이트 방문자를 차단하기 전에는 사이트가 매우 느려집니다. 내 경우에 무엇을 보여줄까요? – nobilik

관련 문제