WayrApp Backend & Ecosystem Documentation - v1.0.0
    Preparing search index...

    Class PerformanceMonitor

    Core performance monitoring class that tracks HTTP request metrics and generates system reports.

    This class maintains in-memory statistics about request performance, including response times, error rates, and slow request detection. It provides comprehensive reporting capabilities with actionable recommendations for performance optimization. The monitor automatically manages memory usage by maintaining a rolling window of the most recent request times.

    PerformanceMonitor

    const monitor = new PerformanceMonitor();

    // Track requests (typically done automatically via middleware)
    monitor.trackRequest(150, false); // 150ms response, no error
    monitor.trackRequest(1200, false); // Slow request (>1000ms)
    monitor.trackRequest(300, true); // 300ms response with error

    // Get current metrics
    const metrics = monitor.getRequestMetrics();
    console.log(`Total requests: ${metrics.totalRequests}`);
    console.log(`Average response time: ${metrics.averageResponseTime}ms`);
    console.log(`Error rate: ${metrics.errorRate}%`);
    Index

    Methods

    • Records performance metrics for a single HTTP request.

      Tracks response time, error status, and identifies slow requests based on the configured threshold (1000ms). Automatically logs warnings for slow requests and maintains a rolling window of recent request times for memory efficiency.

      Parameters

      • responseTime: number

        Request response time in milliseconds

      • OptionalisError: boolean = false

        Whether the request resulted in an error (HTTP status >= 400)

      Returns void

      // Track successful request
      performanceMonitor.trackRequest(250, false);
      // Track error request
      performanceMonitor.trackRequest(500, true);
      // Track slow request (will trigger warning log)
      performanceMonitor.trackRequest(1500, false);
    • Retrieves comprehensive metrics about tracked HTTP requests.

      Calculates and returns aggregated performance statistics including total request count, average response time, error rate, slow request count, and peak/fastest response times. All calculations are based on the current rolling window of tracked requests.

      Returns RequestMetrics

      Object containing comprehensive request performance metrics

      const metrics = performanceMonitor.getRequestMetrics();
      console.log(`Processed ${metrics.totalRequests} requests`);
      console.log(`Average response time: ${metrics.averageResponseTime}ms`);
      console.log(`Error rate: ${metrics.errorRate}%`);
      console.log(`Slow requests: ${metrics.slowRequests}`);
      console.log(`Peak response time: ${metrics.peakResponseTime}ms`);
    • Retrieves current system resource metrics from the Node.js process.

      Collects real-time information about system uptime, memory usage, CPU usage, and active connections. These metrics are essential for monitoring system health and identifying resource bottlenecks in production environments.

      Returns SystemMetrics

      Object containing current system resource metrics

      const systemMetrics = performanceMonitor.getSystemMetrics();
      console.log(`System uptime: ${systemMetrics.uptime} seconds`);
      console.log(`Memory usage: ${systemMetrics.memoryUsage.heapUsed / 1024 / 1024} MB`);
      console.log(`CPU usage: ${systemMetrics.cpuUsage} seconds`);
    • Analyzes performance metrics and generates actionable optimization recommendations.

      Evaluates request performance, system resources, cache efficiency, and database health to provide specific, actionable recommendations for improving application performance. Recommendations are prioritized based on impact and include specific thresholds and suggested solutions.

      Parameters

      • metrics: PerformanceReport

        Complete performance report containing all system metrics

      Returns string[]

      Array of actionable performance optimization recommendations

      const report = await performanceMonitor.generateReport();
      const recommendations = performanceMonitor.generateRecommendations(report);
      recommendations.forEach(rec => console.log(`⚠️ ${rec}`));
    • Generates a comprehensive performance report including all system components.

      Aggregates metrics from request tracking, system resources, database health, and cache performance into a unified report. Includes intelligent recommendations based on current performance patterns and thresholds. This method is used by health check endpoints and monitoring dashboards.

      Returns Promise<PerformanceReport>

      Complete performance report with recommendations

      const report = await performanceMonitor.generateReport();

      console.log('System Status:', report.system.uptime);
      console.log('Request Metrics:', report.requests);
      console.log('Database Status:', report.database.status);
      console.log('Cache Performance:', report.cache);
      console.log('Recommendations:', report.recommendations);

      // Use in health check endpoint
      app.get('/metrics', async (req, res) => {
      const report = await performanceMonitor.generateReport();
      res.json(report);
      });
    • Resets all tracked performance metrics to initial state.

      Clears request times, counters, and error tracking. Useful for testing scenarios, periodic metric resets, or when starting fresh monitoring periods. This operation is logged for audit purposes.

      Returns void

      // Reset metrics for new monitoring period
      performanceMonitor.resetMetrics();
      // Reset via API endpoint
      app.post('/metrics/reset', (req, res) => {
      performanceMonitor.resetMetrics();
      res.json({ success: true, message: 'Metrics reset successfully' });
      });