2011-12-15 10 views
3

私はLinux上で実行されているWebサービスを持っています。これは、C++プログラムに依存するいくつかのPHPコードで構成されています。 PHPおよびC++コードはトランザクションごとに1回実行され、終了します。それは(まだ)永続的ではない(つまりデーモン)、はい、私はそれがより効率的であることを知っています。運用統計収集システムのための推奨事項

トランザクションが完了すると、さまざまな情報が蓄積されます(これを総称して「統計」または「統計」と呼びます)。この情報には、トランザクションのさまざまなサブタスクの実行時間、トランザクションの性質や結果などの論理情報などのプロファイリング情報が含まれます。これらのメトリックはアプリケーション固有のものであるため、一般的な監視および測定ツールはおそらく不適切です。

私はこの情報の記録を開始したいと思いますが、パフォーマンスを妨げるために記録することは望ましくありません。具体的には、すべてのトランザクションでデータベース接続とティアダウンのコストが発生したり、ファイルへの書き込みアクセスを待っている間にブロックされたりしたくないと仮定しています。可能であれば、多くの取引でこのコストを償却したいと思います。私は、統計記録がC++かPHPコードで行われているかどうかは気にしません。

良いアプローチは、サーバー自体でデーモンとして実行され、統計パケット(おそらくJSONやprotobufsなどのパッケージ形式)を受け取るかどうか疑問に思っています。配信チャネルは、ソケットまたはパイプ、または他の種類の効率的なIPCになります。これらのパケットはバンドルに集められ、定期的にデータベースに格納されるか、そうでなければサーバー外に移動されます。効率は、パケットごとの処理を最小限に抑え、高価な操作を多数のパケットに償却することによって実現されます。

私の最初の質問:私が上に概説したアプローチは実行可能で最適なアプローチですか?私が検討すべき他のデザインはありますか?

私の2番目の質問:これは既に存在するはずのもののような感じです。統計パケットを受信、収集、転送するLinuxシステム用の一般的なツールはありますか?

+1

このプロセスをデーモンで実行することを自分自身で提案することは確かに意味があり、間違いなくimhoを実行する必要があります。特に、データベース接続の設定/解除の問題を認識しているためです。 IPCに関しては、SysV IPC以外のすべてのオプションがあります。 – fge

+0

興味深い質問。 JSONまたはProtobufsは、MySQLを使用するだけで実際より速くなりますか?私は同様の状況にあって、 "ダンプ"テーブルに生の統計情報を挿入し、次に別のcronジョブを使ってダンプテーブルからデータを調べて実際の統計テーブルに解析し、邪魔にならない。 – Julien

+0

ええ、@fge、デーモン化はおそらく来ていますが、これは現時点での統計収集よりも大きな作業であり、優先度は低くなっています。パフォーマンスの前に見えて、私は思います。私はこれに使うことのできる既製のツールがあることを願っています。さもなければ、私がデーモン化ルートに行くと、デーモン自体で統計の収集と転送を行うことになります。 –

答えて

0

最初に少し質問があります。あなたがC++でのすべての作業を行うなら、なぜPHPを気にしないのですか?あなたの推論を知ることは非常に興味があります。

よくある統計収集データベースの1つはRRDで、これはPHPでよくサポートされています。統計データをサンプリングするために構築されています。

+0

(私の見解では)レガシーなコードで、PHPのフロントエンドがありました。システム。私はC/C++よりもPHPでのHTTPとJSONベースのWebサービスを実装する方が簡単ですので、それは基本的に使用されたと思います。今日は新鮮始めていた場合、私はすべてのPHPと気にしないでしょう。 RRDのヒントをありがとう。私は見てみましょう。 –

関連する問題