T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/lavocat.quebec/private_html/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.quebec/private_html/scripts/memory-monitor.js
#!/usr/bin/env node

// Memory monitoring script to prevent Node.js crashes
const os = require('os');
const fs = require('fs');
const path = require('path');

class MemoryMonitor {
  constructor() {
    this.lastCheck = Date.now();
    this.checkInterval = 30000; // 30 seconds
    this.maxMemoryUsage = 0.8; // 80% of available memory
    this.maxHeapUsage = 0.9; // 90% of heap size
    
    console.log('๐Ÿง  Memory Monitor Started');
    console.log(`๐Ÿ“Š System Memory: ${(os.totalmem() / 1024 / 1024 / 1024).toFixed(2)} GB`);
    console.log(`๐Ÿ“Š Available Memory: ${(os.freemem() / 1024 / 1024 / 1024).toFixed(2)} GB`);
    
    this.startMonitoring();
  }
  
  getMemoryInfo() {
    const memUsage = process.memoryUsage();
    const systemFree = os.freemem();
    const systemTotal = os.totalmem();
    
    return {
      heapUsed: memUsage.heapUsed,
      heapTotal: memUsage.heapTotal,
      external: memUsage.external,
      rss: memUsage.rss,
      systemFree,
      systemTotal,
      systemUsed: systemTotal - systemFree,
      heapUsagePercent: (memUsage.heapUsed / memUsage.heapTotal) * 100,
      systemUsagePercent: ((systemTotal - systemFree) / systemTotal) * 100
    };
  }
  
  logMemoryStatus() {
    const memInfo = this.getMemoryInfo();
    
    console.log('๐Ÿ“Š Memory Status:');
    console.log(`  Heap Used: ${(memInfo.heapUsed / 1024 / 1024).toFixed(2)} MB`);
    console.log(`  Heap Total: ${(memInfo.heapTotal / 1024 / 1024).toFixed(2)} MB`);
    console.log(`  Heap Usage: ${memInfo.heapUsagePercent.toFixed(2)}%`);
    console.log(`  System Used: ${(memInfo.systemUsed / 1024 / 1024 / 1024).toFixed(2)} GB`);
    console.log(`  System Usage: ${memInfo.systemUsagePercent.toFixed(2)}%`);
    console.log(`  External: ${(memInfo.external / 1024 / 1024).toFixed(2)} MB`);
    console.log(`  RSS: ${(memInfo.rss / 1024 / 1024).toFixed(2)} MB`);
    
    // Check for memory issues
    if (memInfo.heapUsagePercent > 85) {
      console.warn('โš ๏ธ  High heap usage detected!');
      this.forceGarbageCollection();
    }
    
    if (memInfo.systemUsagePercent > 90) {
      console.error('๐Ÿšจ Critical system memory usage!');
      this.emergencyCleanup();
    }
  }
  
  forceGarbageCollection() {
    if (global.gc) {
      console.log('๐Ÿงน Forcing garbage collection...');
      global.gc();
      
      // Log memory after GC
      setTimeout(() => {
        const memInfo = this.getMemoryInfo();
        console.log(`โœ… After GC - Heap: ${(memInfo.heapUsed / 1024 / 1024).toFixed(2)} MB (${memInfo.heapUsagePercent.toFixed(2)}%)`);
      }, 1000);
    } else {
      console.warn('โš ๏ธ  Garbage collection not available (run with --expose-gc)');
    }
  }
  
  emergencyCleanup() {
    console.log('๐Ÿšจ Emergency cleanup initiated...');
    
    // Force multiple GC cycles
    if (global.gc) {
      for (let i = 0; i < 3; i++) {
        global.gc();
      }
    }
    
    // Log final status
    setTimeout(() => {
      const memInfo = this.getMemoryInfo();
      console.log(`๐Ÿ†˜ Emergency cleanup complete - Heap: ${(memInfo.heapUsed / 1024 / 1024).toFixed(2)} MB`);
    }, 2000);
  }
  
  startMonitoring() {
    setInterval(() => {
      this.logMemoryStatus();
    }, this.checkInterval);
  }
}

// Start monitoring if this script is run directly
if (require.main === module) {
  new MemoryMonitor();
}

module.exports = MemoryMonitor; 

CasperSecurity Mini