1

統計の目的で、1 つの HTTP 接続で行われたリクエストの数 (1 つのオープン ソケットで行われたキープアライブ リクエストの数) を数えたいと思います。

node.js では、リクエストおよびレスポンス オブジェクトの「ソケット」にアクセスでき、「リクエスト」などのフィールドを動的に追加してインクリメントできます。また、「socket close」ハンドラーをアタッチしてから、「request」フィールドを syslog に記録し、Graphite で 1 分間の平均を取得することもできます。

これはvertx.ioで可能ですか? HttpRequest および HttpResponse クラスでソケット フィールドが見つかりません。

4

1 に答える 1

2

これを行う簡単な方法はありません。

あなたはハックをするかもしれません:実際にはプライベートフィールドを持つHttpServerRequestのインスタンスです。このフィールドには、リフレクション経由でアクセスできます。たとえば、http: //tutorials.jenkov.com/java-reflection/private-fields-and-methods.htmlで説明されています。リクエストのカウントは、整数への接続のマップを作成することで実装できます。org.vertx.java.core.http.impl.DefaultHttpServerRequestServerConnection conn

このハックはテスト目的には十分ですが、メモリ リークがあるため、本番環境では作業しません。この機能をクラスhandleMessageのメソッドに追加ServerConnectionし、JMX 経由で公開することをお勧めします。

于 2012-09-15T06:41:42.120 に答える