2011-06-24 14 views
0

私は3つのサーバーを持っています。私は、これらのプロセスは、この書き込みがプロセスを遅くするファイルプロセスのパフォーマンスの影響を監視しますか?

./run.sh > run.log 

にその標準出力を書いてみましょうか? (./run.shスクリプトは、Javaプログラムや時にはRubyプログラムなどのように起動します)

これで、実行中のスクリプトの出力を表示するWebインターフェイスを作成します。私は5秒ごとに更新し、サーバーとのSSH接続を作成し、run.logファイルを取得するPHPスクリプトを作成すると想像することができます。

しかし、プロセスを妨害したり、遅くなることはありませんか? サーバーができるだけ多くの電力を使用できるのは本当に珍しいことです。これを処理するより良い方法がありますか? 5秒ごとにSSH接続を作成するのではなく、永続的な接続とAjaxによる更新を行いますか? (セキュリティは必須ではありません)

+0

そんなに心配しているのであれば、まずはJavaやRubyを使ってはいけません。 –

+0

私はC言語の勉強の苦労を経なければならないということはそれほど重要ではありません:) EclipseCLPを使用して仕事の肉をやっています.JavaとRubyを使ってすべてをガイドしています。今のところ、それは時間の制約が与えられたときの最良の解決策です。 – Joris

答えて

1

この書き込みは処理が遅くなるでしょうか? (./run.shスクリプトは、例えば、Javaプログラムや時にはRubyプログラムを起動する)

多分;プロセスが大量のデータを書き込む場合、プロセスが簡単に減速する可能性があります。これは、プロセスがディスクに同期して書き込みを行うためです。それ以外の場合は、心配する必要はありません。

代わりに、スクリプトが何らかの種類のメッセージサービスを介してWebアプリケーションを使用してマシンに出力を送信する設定があります。これにより、サーバーのポーリングが回避されます。それがより効率的かどうかは細部によって決まる。

単純な効率的なメカニズムは、stdoutをUDPソケットに転送して、Webアプリケーションにこれらのメッセージを一時的に受信して循環バッファに格納させることです。

+0

あなたの答えをありがとう、これを行う簡単な方法がありますか?ソケットを介して出力を送信する方が速いですか?それほど多くのデータではなく、約-30秒ごとに40行の出力を書きます – Joris

+0

30行ごとに40行の出力があるため、パフォーマンスの低下は心配しません。それ。あなたの質問に答えるために、私は本当に何が速いのか分かりませんが、UDPソケットを介してデータを送信すると、サーバーをポーリングする必要がなく、潜在的に簡単になる利点があります。あなたは 'ncat'で簡単にUDPソケットを受信して​​送信することができます。 – Artefacto

+0

クール!あなたのおかげでありがとう、私はちょっとグーグルで、今私はlogglyにnetcatで私のプロセスの出力を送信しています:) – Joris

関連する問題