Phusion 乘客生成轨道应用程序导致高 CPU 使用率



我在同一台服务器上运行Asterisk和Rails应用程序。所有通过Asterisk的入站呼叫都会触发对rails应用程序控制器的"curl",以启动巨大的发布,从而能够将入站呼叫实时推送到个人登录用户(弹出对话框显示呼叫者个人资料详细信息)。

问题是,当调用开始进入时,rails 应用程序的乘客生成器以几乎 100% 的 CPU 使用率运行。每个呼入电话将运行:

/

usr/bin/curl http://parlo.local/asterisk/inbound_call?exten=8405&src_num=921187888&recordingfilename=q70001-20

在星号控制器中:

def inbound_call
  if params[:src_num].length > 6
    extension = AsteriskUserextension.find_by_extension(params[:exten])
    if extension.present? && extension.user.present?
      @user = extension.user
      customer = Customer.first_match(params[:src_num]).first
      customer_name = customer.present? ? customer.full_name : "Unknown Caller"
      queue = AsteriskQueue.find_by_name(params[:queue])
      @result = Asterisk::Action.response_factory("asterisk_inbound","#{queue.try(:title)}","OK",customer.try(:id))
      publish
    end
  end
  render :nothing => true, :status => :created
end

我相信高呼入呼叫率导致了高 CPU 使用率。纠正这种情况的最佳方法是什么?将所有工作推送给RESQUE会有所帮助吗?

感谢您的任何指导!

你需要使用FastCGI技术。

此外,您需要在星号中使用CURL函数而不是系统应用程序。

每次调用系统都会创建外壳并分叉新进程。

此外,通过 AMI 而不是 DOOIGN CURL 检查星号事件也是一个好主意。

最新更新