2

同じサーバーでアスタリスクと Rails アプリを実行しています。アスタリスク経由のすべてのインバウンド コールは、Rails アプリのコントローラーへの「カール」をトリガーしてジャガーノート パブリッシュを開始し、ログインしている個々のユーザーへのインバウンド コールのリアルタイム プッシュを有効にします (発信者プロファイルの詳細を示すポップアップ ダイアログ)。

問題は、Rails アプリの Passenger Spawner が、通話が開始されるたびにほぼ 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 にプッシュすることは役に立ちますか?

ご指導ありがとうございます。

4

1 に答える 1

0

FastCGI テクノロジを使用する必要があります。

また、アスタリスクでは、システム アプリケーションの代わりに CURL 関数を使用する必要があります。

システムを呼び出すたびに、シェルが作成され、新しいプロセスがフォークされます。

また、Dooign CURL の代わりに AMI を介してアスタリスク イベントをチェックすることも良い考えです。

于 2012-05-08T04:21:16.743 に答える