Ruby on rails Phusion乘客产卵器rails应用程序导致高cpu使用率

Ruby on rails Phusion乘客产卵器rails应用程序导致高cpu使用率,ruby-on-rails,passenger,asterisk,phusion,Ruby On Rails,Passenger,Asterisk,Phusion,我在同一台服务器上运行了Asterisk和Rails应用程序。所有通过Asterisk的入站呼叫都会触发对rails应用程序控制器的“curl”,以启动juggernaut发布,从而能够将入站呼叫实时推送到单个登录用户(显示呼叫方配置文件详细信息的弹出对话框) 问题是,rails应用程序的乘客产卵器在任何呼叫开始进入时都以几乎100%的CPU使用率运行。每个入站电话将运行: /usr/bin/curl 在星号控制器中: def inbound_call if params[:src_num]

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

问题是,rails应用程序的乘客产卵器在任何呼叫开始进入时都以几乎100%的CPU使用率运行。每个入站电话将运行:

/usr/bin/curl

在星号控制器中:

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使用率。补救这种情况的最好办法是什么?把所有的工作都推到重做会有帮助吗


谢谢你的指导

您需要使用FastCGI技术

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

对系统的每次调用都会创建shell和fork新进程


通过AMI而不是dooign CURL检查星号事件也是一个不错的主意。

您需要使用FastCGI技术

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

对系统的每次调用都会创建shell和fork新进程

也可以通过AMI检查星号事件,而不是dooign CURL