diff --git a/packages/ditto/storages/DittoPgStore.ts b/packages/ditto/storages/DittoPgStore.ts index 5152ec09..4708a63a 100644 --- a/packages/ditto/storages/DittoPgStore.ts +++ b/packages/ditto/storages/DittoPgStore.ts @@ -4,7 +4,7 @@ import { type DittoConf } from '@ditto/conf'; import { type DittoDB, type DittoTables } from '@ditto/db'; import { detectLanguage } from '@ditto/lang'; import { NPostgres, NPostgresSchema } from '@nostrify/db'; -import { dbEventsCounter, internalSubscriptionsSizeGauge } from '@ditto/metrics'; +import { dbEventsCounter, internalSubscriptionsBytesGauge, internalSubscriptionsSizeGauge } from '@ditto/metrics'; import { NIP50, NKinds, @@ -354,8 +354,11 @@ export class DittoPgStore extends NPostgres { yield ['EOSE', subId]; } + const sizeBytes = new TextEncoder().encode(JSON.stringify(filters)).length; + this.subs.set(subId, { filters, machina }); internalSubscriptionsSizeGauge.set(this.subs.size); + internalSubscriptionsBytesGauge.inc(sizeBytes); try { for await (const msg of machina) { @@ -370,6 +373,7 @@ export class DittoPgStore extends NPostgres { } finally { this.subs.delete(subId); internalSubscriptionsSizeGauge.set(this.subs.size); + internalSubscriptionsBytesGauge.dec(sizeBytes); } } diff --git a/packages/metrics/metrics.ts b/packages/metrics/metrics.ts index 9e131951..e41a9431 100644 --- a/packages/metrics/metrics.ts +++ b/packages/metrics/metrics.ts @@ -133,6 +133,11 @@ export const internalSubscriptionsSizeGauge: Gauge = new Gauge({ help: "Number of active subscriptions to Ditto's internal relay", }); +export const internalSubscriptionsBytesGauge: Gauge = new Gauge({ + name: `${prefix}_internal_subscriptions_bytes`, + help: "Total size in bytes of active subscriptions to Ditto's internal relay", +}); + export const relayPoolRelaysSizeGauge: Gauge<'ready_state'> = new Gauge({ name: `${prefix}_relay_pool_relays_size`, help: 'Number of relays in the relay pool',