2016-10-03 4 views
1

アスタリスクサーバーは、MySQLデータベースを照会する外部スクリプト(必要があれば "AGI")を実行する必要があります。このスクリプトは頻繁に実行され、おそらく毎分50-100回実行されますが、それはあまり効果がありません(約10-15の選択、結果に対する計算とアスタリスクへの結果のエコー)。MySQLでサポートされているLinux用の低オーバーヘッド言語は何ですか?

スクリプトがPHPシェルスクリプトである場合、負荷テスト中にCPUが大量に使用されます(実行されるたびに、PHPライブラリ全体が読み込まれるため)。

一方、スクリプトがbashシェルスクリプトの場合、bashは(簡単に)1つのMySQL接続を維持できず、リモートサーバーとの接続/切断を10-15回行うことができないため、実行に時間がかかります。 SSLネゴシエーションにはそれぞれ1秒間で数十分の1秒かかるので、スクリプト全体では3〜4秒かかることがあります。

このタスクの言語の選択肢は何ですか?オーバーヘッドは少ないが、MySQLのサポートが容易で、コンパイルするのではなく解釈するのが望ましい。

+0

は、1分あたり60~100個の同期がとれていますか? – Drew

+0

スクリプトの1つのインスタンスがまだ実行されている間に、スクリプトの2番目のインスタンスが起動しなければならないことがあります。 – sverreg

+0

私はそれがブロックされていることを意味します。最後に、あなたが思いついたこととそのプロファイリングをコミュニティと共有しよう – Drew

答えて

1

1分あたり50-100回の新しいプロセスを開始する言語は、オーバーヘッドがあります。

プログラムに書き込まれる言語に関係なく、単にプロセスを開始するだけのオーバーヘッドがあります。代わりにサービスに要求することで、プロセスのオーバーヘッドを避けるのが理想的です。しかし、AGIインターフェイスを使用する必要があるように聞こえるので、実際にこのオーバーヘッドから逃れることはできません。

すべてのスクリプト言語(PHP/Ruby/Python/Perl)には、起動する必要があるインタプリタがあります。

Javaの場合でも、各プロセスで起動する必要があるランタイムJVMがあるため、これはまだオーバーヘッドがあるコンパイル済みの言語の例です。

C、C++、Goなどのコンパイル言語は、おそらく言語ランタイムのオーバーヘッドを最小限に抑えるための良い選択です。これらはすべてMySQLへのプログラミングインタフェースを備えています。

関連する問題