mirror of
https://github.com/danog/MadelineProto.git
synced 2024-11-30 06:39:01 +01:00
Add inflight request gauge
This commit is contained in:
parent
f04d072af0
commit
6421d7f231
2
docs
2
docs
@ -1 +1 @@
|
||||
Subproject commit f37b981f1b0dfb1ea4020e509180840a15a7289a
|
||||
Subproject commit 7fc41dd5738ab4c9dbc2e756e8140719ce2c2d1c
|
@ -3643,6 +3643,12 @@
|
||||
<code><![CDATA[$request->getSent()]]></code>
|
||||
<code><![CDATA[$request->getSent()]]></code>
|
||||
</PossiblyNullOperand>
|
||||
<PossiblyNullReference>
|
||||
<code><![CDATA[dec]]></code>
|
||||
<code><![CDATA[dec]]></code>
|
||||
<code><![CDATA[observe]]></code>
|
||||
<code><![CDATA[observe]]></code>
|
||||
</PossiblyNullReference>
|
||||
<RedundantConditionGivenDocblockType>
|
||||
<code><![CDATA[$this->API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]></code>
|
||||
</RedundantConditionGivenDocblockType>
|
||||
|
2
schemas
2
schemas
@ -1 +1 @@
|
||||
Subproject commit 6fc533efe6e1ce440f6da4b0d7037460f73ce96b
|
||||
Subproject commit da7d066eee5fa53e5ef43a964032d56197810de9
|
@ -125,6 +125,11 @@ final class WriteLoop extends Loop
|
||||
$this->connection->outgoing_messages[$message_id] = $message;
|
||||
$this->connection->new_outgoing[$message_id] = $message;
|
||||
|
||||
if ($message->getSent() === null) {
|
||||
$this->connection->inFlightGauge?->inc([
|
||||
'method' => $message->constructor,
|
||||
]);
|
||||
}
|
||||
$message->sent();
|
||||
}
|
||||
if ($skipped_all) {
|
||||
@ -371,6 +376,11 @@ final class WriteLoop extends Loop
|
||||
if ($message->hasPromise()) {
|
||||
$this->connection->new_outgoing[$message_id] = $message;
|
||||
}
|
||||
if ($message->getSent() === null) {
|
||||
$this->connection->inFlightGauge?->inc([
|
||||
'method' => $message->constructor,
|
||||
]);
|
||||
}
|
||||
$message->sent();
|
||||
$message->cancellation?->subscribe(function () use ($message): void {
|
||||
if ($message->hasMsgId()) {
|
||||
|
@ -281,8 +281,11 @@ trait ResponseHandler
|
||||
'error_message' => 'OK',
|
||||
'error_code' => '200',
|
||||
]);
|
||||
$this->requestLatencies?->observe(
|
||||
(hrtime(true) - $request->getSent()) / 1_000_000_000.0,
|
||||
$this->inFlightGauge->dec([
|
||||
'method' => $request->constructor,
|
||||
]);
|
||||
$this->requestLatencies->observe(
|
||||
hrtime(true) - $request->getSent(),
|
||||
['method' => $request->constructor]
|
||||
);
|
||||
}
|
||||
@ -301,8 +304,11 @@ trait ResponseHandler
|
||||
'error_message' => preg_replace('/\d+/', 'X', $response['error_message']),
|
||||
'error_code' => (string) $response['error_code'],
|
||||
]);
|
||||
$this->requestLatencies?->observe(
|
||||
(hrtime(true) - $request->getSent()) / 1_000_000_000.0,
|
||||
$this->inFlightGauge->dec([
|
||||
'method' => $request->constructor,
|
||||
]);
|
||||
$this->requestLatencies->observe(
|
||||
hrtime(true) - $request->getSent(),
|
||||
['method' => $request->constructor]
|
||||
);
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ trait Session
|
||||
use CallHandler;
|
||||
use Reliable;
|
||||
public ?BetterGauge $pendingOutgoingGauge = null;
|
||||
public ?BetterGauge $inFlightGauge = null;
|
||||
public ?BetterCounter $incomingCtr = null;
|
||||
public ?BetterCounter $outgoingCtr = null;
|
||||
public ?BetterCounter $incomingBytesCtr = null;
|
||||
@ -185,12 +186,34 @@ trait Session
|
||||
{
|
||||
$labels = ['datacenter' => (string) $this->datacenter, 'connection' => (string) $this->id];
|
||||
$this->pendingOutgoingGauge = $this->API->getPromGauge("MadelineProto", "pending_outgoing_mtproto_messages", "Number of not-yet sent outgoing MTProto messages", $labels);
|
||||
$this->inFlightGauge = $this->API->getPromGauge("MadelineProto", "inflight_requests", "Number of in-flight requests", $labels);
|
||||
$this->incomingCtr = $this->API->getPromCounter("MadelineProto", "incoming_mtproto_messages", "Number of received MTProto messages", $labels);
|
||||
$this->outgoingCtr = $this->API->getPromCounter("MadelineProto", "outgoing_mtproto_messages", "Number of sent MTProto messages", $labels);
|
||||
$this->incomingBytesCtr = $this->API->getPromCounter("MadelineProto", "incoming_bytes", "Number of received bytes", $labels);
|
||||
$this->outgoingBytesCtr = $this->API->getPromCounter("MadelineProto", "outgoing_bytes", "Number of sent bytes", $labels);
|
||||
$this->requestResponse = $this->API->getPromCounter("MadelineProto", "request_responses", "Received RPC error or success status of requests by method.", $labels);
|
||||
$this->requestLatencies = $this->API->getPromHistogram("MadelineProto", "request_latencies", "Request latency by method", $labels);
|
||||
$this->requestLatencies = $this->API->getPromHistogram(
|
||||
"MadelineProto",
|
||||
"request_latencies",
|
||||
"Request latency in nanoseconds by method",
|
||||
$labels,
|
||||
[
|
||||
5_000_000,
|
||||
10_000_000,
|
||||
25_000_000,
|
||||
50_000_000,
|
||||
75_000_000,
|
||||
100_000_000,
|
||||
250_000_000,
|
||||
500_000_000,
|
||||
750_000_000,
|
||||
1000_000_000,
|
||||
2500_000_000,
|
||||
5000_000_000,
|
||||
7500_000_000,
|
||||
10000_000_000,
|
||||
]
|
||||
);
|
||||
if ($this->session_id === null) {
|
||||
$this->resetSession("creating initial session");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user