TODO: Implement latency tracking in WorkerHub #166

Closed
opened 2026-01-24 10:14:30 +00:00 by jack · 0 comments
Owner

Beschreibung

In packages/backend/src/websocket/worker-hub.ts gibt es ein TODO für Latenz-Tracking:

return {
  totalConnected: this.workers.size,
  byCapability: byCapability as Record<WorkerCapability, number>,
  averageLatency: 0, // TODO: Track latency
};

Die averageLatency wird aktuell immer als 0 zurückgegeben.

Zu implementieren

  1. Latenz-Messung bei Heartbeats:

    • Zeitstempel beim Senden des Heartbeat-Pings speichern
    • Latenz beim Empfang des Pongs berechnen
  2. Pro-Worker Latenz-Tracking:

    • Latenz-Historie pro Worker speichern
    • Moving Average oder Sliding Window implementieren
  3. Aggregierte Statistik:

    • Durchschnitt über alle verbundenen Worker berechnen
    • Optional: Min/Max/P95 Latenz

Mögliche Implementierung

interface ConnectedWorker {
  // ... existing fields
  latencyHistory: number[];
  lastPingTime?: number;
}

// Bei Heartbeat-Pong:
const latency = Date.now() - worker.lastPingTime;
worker.latencyHistory.push(latency);
if (worker.latencyHistory.length > 10) {
  worker.latencyHistory.shift();
}

// Bei getStats():
const avgLatency = workers.reduce((sum, w) => 
  sum + (w.latencyHistory.reduce((a, b) => a + b, 0) / w.latencyHistory.length || 0)
, 0) / workers.length;

Betroffene Datei

  • packages/backend/src/websocket/worker-hub.ts (Zeile 441)

Priorität

Niedrig - Feature-Verbesserung für Monitoring/Dashboard

## Beschreibung In `packages/backend/src/websocket/worker-hub.ts` gibt es ein TODO für Latenz-Tracking: ```typescript return { totalConnected: this.workers.size, byCapability: byCapability as Record<WorkerCapability, number>, averageLatency: 0, // TODO: Track latency }; ``` Die `averageLatency` wird aktuell immer als `0` zurückgegeben. ## Zu implementieren 1. **Latenz-Messung bei Heartbeats:** - Zeitstempel beim Senden des Heartbeat-Pings speichern - Latenz beim Empfang des Pongs berechnen 2. **Pro-Worker Latenz-Tracking:** - Latenz-Historie pro Worker speichern - Moving Average oder Sliding Window implementieren 3. **Aggregierte Statistik:** - Durchschnitt über alle verbundenen Worker berechnen - Optional: Min/Max/P95 Latenz ## Mögliche Implementierung ```typescript interface ConnectedWorker { // ... existing fields latencyHistory: number[]; lastPingTime?: number; } // Bei Heartbeat-Pong: const latency = Date.now() - worker.lastPingTime; worker.latencyHistory.push(latency); if (worker.latencyHistory.length > 10) { worker.latencyHistory.shift(); } // Bei getStats(): const avgLatency = workers.reduce((sum, w) => sum + (w.latencyHistory.reduce((a, b) => a + b, 0) / w.latencyHistory.length || 0) , 0) / workers.length; ``` ## Betroffene Datei - `packages/backend/src/websocket/worker-hub.ts` (Zeile 441) ## Priorität Niedrig - Feature-Verbesserung für Monitoring/Dashboard
jack closed this issue 2026-01-24 17:50:02 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
customable/claude-mem#166
No description provided.