mirror of
https://github.com/danog/MadelineProto.git
synced 2024-12-02 09:57:47 +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>
|
||||||
<code><![CDATA[$request->getSent()]]></code>
|
<code><![CDATA[$request->getSent()]]></code>
|
||||||
</PossiblyNullOperand>
|
</PossiblyNullOperand>
|
||||||
|
<PossiblyNullReference>
|
||||||
|
<code><![CDATA[dec]]></code>
|
||||||
|
<code><![CDATA[dec]]></code>
|
||||||
|
<code><![CDATA[observe]]></code>
|
||||||
|
<code><![CDATA[observe]]></code>
|
||||||
|
</PossiblyNullReference>
|
||||||
<RedundantConditionGivenDocblockType>
|
<RedundantConditionGivenDocblockType>
|
||||||
<code><![CDATA[$this->API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]></code>
|
<code><![CDATA[$this->API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]></code>
|
||||||
</RedundantConditionGivenDocblockType>
|
</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->outgoing_messages[$message_id] = $message;
|
||||||
$this->connection->new_outgoing[$message_id] = $message;
|
$this->connection->new_outgoing[$message_id] = $message;
|
||||||
|
|
||||||
|
if ($message->getSent() === null) {
|
||||||
|
$this->connection->inFlightGauge?->inc([
|
||||||
|
'method' => $message->constructor,
|
||||||
|
]);
|
||||||
|
}
|
||||||
$message->sent();
|
$message->sent();
|
||||||
}
|
}
|
||||||
if ($skipped_all) {
|
if ($skipped_all) {
|
||||||
@ -371,6 +376,11 @@ final class WriteLoop extends Loop
|
|||||||
if ($message->hasPromise()) {
|
if ($message->hasPromise()) {
|
||||||
$this->connection->new_outgoing[$message_id] = $message;
|
$this->connection->new_outgoing[$message_id] = $message;
|
||||||
}
|
}
|
||||||
|
if ($message->getSent() === null) {
|
||||||
|
$this->connection->inFlightGauge?->inc([
|
||||||
|
'method' => $message->constructor,
|
||||||
|
]);
|
||||||
|
}
|
||||||
$message->sent();
|
$message->sent();
|
||||||
$message->cancellation?->subscribe(function () use ($message): void {
|
$message->cancellation?->subscribe(function () use ($message): void {
|
||||||
if ($message->hasMsgId()) {
|
if ($message->hasMsgId()) {
|
||||||
|
@ -281,8 +281,11 @@ trait ResponseHandler
|
|||||||
'error_message' => 'OK',
|
'error_message' => 'OK',
|
||||||
'error_code' => '200',
|
'error_code' => '200',
|
||||||
]);
|
]);
|
||||||
$this->requestLatencies?->observe(
|
$this->inFlightGauge->dec([
|
||||||
(hrtime(true) - $request->getSent()) / 1_000_000_000.0,
|
'method' => $request->constructor,
|
||||||
|
]);
|
||||||
|
$this->requestLatencies->observe(
|
||||||
|
hrtime(true) - $request->getSent(),
|
||||||
['method' => $request->constructor]
|
['method' => $request->constructor]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -301,8 +304,11 @@ trait ResponseHandler
|
|||||||
'error_message' => preg_replace('/\d+/', 'X', $response['error_message']),
|
'error_message' => preg_replace('/\d+/', 'X', $response['error_message']),
|
||||||
'error_code' => (string) $response['error_code'],
|
'error_code' => (string) $response['error_code'],
|
||||||
]);
|
]);
|
||||||
$this->requestLatencies?->observe(
|
$this->inFlightGauge->dec([
|
||||||
(hrtime(true) - $request->getSent()) / 1_000_000_000.0,
|
'method' => $request->constructor,
|
||||||
|
]);
|
||||||
|
$this->requestLatencies->observe(
|
||||||
|
hrtime(true) - $request->getSent(),
|
||||||
['method' => $request->constructor]
|
['method' => $request->constructor]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ trait Session
|
|||||||
use CallHandler;
|
use CallHandler;
|
||||||
use Reliable;
|
use Reliable;
|
||||||
public ?BetterGauge $pendingOutgoingGauge = null;
|
public ?BetterGauge $pendingOutgoingGauge = null;
|
||||||
|
public ?BetterGauge $inFlightGauge = null;
|
||||||
public ?BetterCounter $incomingCtr = null;
|
public ?BetterCounter $incomingCtr = null;
|
||||||
public ?BetterCounter $outgoingCtr = null;
|
public ?BetterCounter $outgoingCtr = null;
|
||||||
public ?BetterCounter $incomingBytesCtr = null;
|
public ?BetterCounter $incomingBytesCtr = null;
|
||||||
@ -185,12 +186,34 @@ trait Session
|
|||||||
{
|
{
|
||||||
$labels = ['datacenter' => (string) $this->datacenter, 'connection' => (string) $this->id];
|
$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->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->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->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->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->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->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) {
|
if ($this->session_id === null) {
|
||||||
$this->resetSession("creating initial session");
|
$this->resetSession("creating initial session");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user