This commit is contained in:
jejolare 2025-04-28 17:16:55 +07:00
parent 99eafa4d23
commit c869360b22
3 changed files with 30 additions and 4 deletions

17
package-lock.json generated
View file

@ -23,6 +23,7 @@
"dotenv": "^16.4.5",
"express": "^4.21.0",
"express-rate-limit": "^7.4.0",
"heapdump": "^0.3.15",
"highcharts": "^11.1.0",
"highcharts-react-official": "^3.2.1",
"http-proxy-middleware": "^2.0.6",
@ -12522,6 +12523,18 @@
"he": "bin/he"
}
},
"node_modules/heapdump": {
"version": "0.3.15",
"resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.15.tgz",
"integrity": "sha512-n8aSFscI9r3gfhOcAECAtXFaQ1uy4QSke6bnaL+iymYZ/dWs9cqDqHM+rALfsHUwukUbxsdlECZ0pKmJdQ/4OA==",
"hasInstallScript": true,
"dependencies": {
"nan": "^2.13.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/highcharts": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.1.0.tgz",
@ -16450,9 +16463,7 @@
"node_modules/nan": {
"version": "2.22.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
"integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
"dev": true,
"optional": true
"integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw=="
},
"node_modules/nanoid": {
"version": "5.0.1",

View file

@ -19,6 +19,7 @@
"dotenv": "^16.4.5",
"express": "^4.21.0",
"express-rate-limit": "^7.4.0",
"heapdump": "^0.3.15",
"highcharts": "^11.1.0",
"highcharts-react-official": "^3.2.1",
"http-proxy-middleware": "^2.0.6",
@ -44,7 +45,7 @@
"client": "next dev",
"build": "next build",
"dev": "npx nodemon --exec tsx ./server/server.ts",
"start": "cross-env NODE_ENV=production NODE_OPTIONS='--max-old-space-size=8192' tsx ./server/server.ts",
"start": "cross-env NODE_ENV=production NODE_OPTIONS='--max-old-space-size=8192 --trace-gc' tsx ./server/server.ts",
"submodule": "git submodule update --init --recursive"
},
"eslintConfig": {

View file

@ -1,3 +1,4 @@
import heapdump from 'heapdump';
import "dotenv/config";
import express from "express";
import http from "http";
@ -2077,3 +2078,16 @@ async function waitForDb() {
await new Promise(res => setTimeout(res, 60 * 1e3));
}
})();
setInterval(() => {
const memoryUsage = process.memoryUsage();
console.log(`[Memory Log] heapUsed: ${(memoryUsage.heapUsed / 1024 / 1024).toFixed(2)} MB`);
if (memoryUsage.heapUsed > 1.5 * 1024 * 1024 * 1024) {
const file = `/tmp/explorer/heapdump-${Date.now()}.heapsnapshot`;
heapdump.writeSnapshot(file, (err, filename) => {
if (err) console.error('Heapdump failed:', err);
else console.log('Heapdump written to', filename);
});
}
}, 30000);