mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 23:40:13 +01:00
Show Nodejs heap stats only at Standalone WeKan.
Not shown at Sandstorm WeKan, because there's a bunch of machine performance data Sandstorm doesn't expose to apps to prevent side channel attacks. Thanks to ocdtrekkie and xet7 ! Fixes #4154
This commit is contained in:
parent
6d719b8a98
commit
02b6df320f
2 changed files with 80 additions and 66 deletions
|
|
@ -65,48 +65,49 @@ template(name='statistics')
|
|||
tr
|
||||
th {{_ 'OS_Cpus'}}
|
||||
td {{statistics.os.cpus.length}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_heap_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalHeapSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_heap_size_executable'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalHeapSizeExecutable}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_physical_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalPhysicalSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_available_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalAvailableSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_used_heap_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.usedHeapSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_heap_size_limit'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.heapSizeLimit}}
|
||||
tr
|
||||
th {{_ 'Node_heap_malloced_memory'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.mallocedMemory}}
|
||||
tr
|
||||
th {{_ 'Node_heap_peak_malloced_memory'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.peakMallocedMemory}}
|
||||
tr
|
||||
th {{_ 'Node_heap_does_zap_garbage'}}
|
||||
td {{statistics.nodeHeapStats.doesZapGarbage}}
|
||||
tr
|
||||
th {{_ 'Node_heap_number_of_native_contexts'}}
|
||||
td {{statistics.nodeHeapStats.numberOfNativeContexts}}
|
||||
tr
|
||||
th {{_ 'Node_heap_number_of_detached_contexts'}}
|
||||
td {{statistics.nodeHeapStats.numberOfDetachedContexts}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_rss'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.rss}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_heap_total'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.heapTotal}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_heap_used'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.heapUsed}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_external'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.external}}
|
||||
unless isSandstorm
|
||||
tr
|
||||
th {{_ 'Node_heap_total_heap_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalHeapSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_heap_size_executable'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalHeapSizeExecutable}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_physical_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalPhysicalSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_total_available_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.totalAvailableSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_used_heap_size'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.usedHeapSize}}
|
||||
tr
|
||||
th {{_ 'Node_heap_heap_size_limit'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.heapSizeLimit}}
|
||||
tr
|
||||
th {{_ 'Node_heap_malloced_memory'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.mallocedMemory}}
|
||||
tr
|
||||
th {{_ 'Node_heap_peak_malloced_memory'}}
|
||||
td {{bytesToSize statistics.nodeHeapStats.peakMallocedMemory}}
|
||||
tr
|
||||
th {{_ 'Node_heap_does_zap_garbage'}}
|
||||
td {{statistics.nodeHeapStats.doesZapGarbage}}
|
||||
tr
|
||||
th {{_ 'Node_heap_number_of_native_contexts'}}
|
||||
td {{statistics.nodeHeapStats.numberOfNativeContexts}}
|
||||
tr
|
||||
th {{_ 'Node_heap_number_of_detached_contexts'}}
|
||||
td {{statistics.nodeHeapStats.numberOfDetachedContexts}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_rss'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.rss}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_heap_total'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.heapTotal}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_heap_used'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.heapUsed}}
|
||||
tr
|
||||
th {{_ 'Node_memory_usage_external'}}
|
||||
td {{bytesToSize statistics.nodeMemoryUsage.external}}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
import { MongoInternals } from 'meteor/mongo';
|
||||
|
||||
// Sandstorm context is detected using the METEOR_SETTINGS environment variable
|
||||
// in the package definition.
|
||||
const isSandstorm =
|
||||
Meteor.settings && Meteor.settings.public && Meteor.settings.public.sandstorm;
|
||||
|
||||
if (Meteor.isServer) {
|
||||
Meteor.methods({
|
||||
getStatistics() {
|
||||
|
|
@ -28,27 +33,35 @@ if (Meteor.isServer) {
|
|||
pid: process.pid,
|
||||
uptime: process.uptime(),
|
||||
};
|
||||
const v8 = require('v8'); // Import the v8 module
|
||||
statistics.nodeHeapStats = {
|
||||
totalHeapSize: v8.getHeapStatistics().total_heap_size,
|
||||
totalHeapSizeExecutable: v8.getHeapStatistics().total_heap_size_executable,
|
||||
totalPhysicalSize: v8.getHeapStatistics().total_physical_size,
|
||||
totalAvailableSize: v8.getHeapStatistics().total_available_size,
|
||||
usedHeapSize: v8.getHeapStatistics().used_heap_size,
|
||||
heapSizeLimit: v8.getHeapStatistics().heap_size_limit,
|
||||
mallocedMemory: v8.getHeapStatistics().malloced_memory,
|
||||
peakMallocedMemory: v8.getHeapStatistics().peak_malloced_memory,
|
||||
doesZapGarbage: v8.getHeapStatistics().does_zap_garbage,
|
||||
numberOfNativeContexts: v8.getHeapStatistics().number_of_native_contexts,
|
||||
numberOfDetachedContexts: v8.getHeapStatistics().number_of_detached_contexts,
|
||||
};
|
||||
let memoryUsage = process.memoryUsage();
|
||||
statistics.nodeMemoryUsage = {
|
||||
rss: memoryUsage.rss,
|
||||
heapTotal: memoryUsage.heapTotal,
|
||||
heapUsed: memoryUsage.heapUsed,
|
||||
external: memoryUsage.external,
|
||||
};
|
||||
// Start: Show Nodejs heap stats at Standalone WeKan.
|
||||
//
|
||||
// Not shown at Sandstorm WeKan, because there's a bunch of machine performance data
|
||||
// Sandstorm doesn't expose to apps to prevent side channel attacks.
|
||||
if (!isSandstorm) {
|
||||
const v8 = require('v8'); // Import the v8 module
|
||||
statistics.nodeHeapStats = {
|
||||
totalHeapSize: v8.getHeapStatistics().total_heap_size,
|
||||
totalHeapSizeExecutable: v8.getHeapStatistics().total_heap_size_executable,
|
||||
totalPhysicalSize: v8.getHeapStatistics().total_physical_size,
|
||||
totalAvailableSize: v8.getHeapStatistics().total_available_size,
|
||||
usedHeapSize: v8.getHeapStatistics().used_heap_size,
|
||||
heapSizeLimit: v8.getHeapStatistics().heap_size_limit,
|
||||
mallocedMemory: v8.getHeapStatistics().malloced_memory,
|
||||
peakMallocedMemory: v8.getHeapStatistics().peak_malloced_memory,
|
||||
doesZapGarbage: v8.getHeapStatistics().does_zap_garbage,
|
||||
numberOfNativeContexts: v8.getHeapStatistics().number_of_native_contexts,
|
||||
numberOfDetachedContexts: v8.getHeapStatistics().number_of_detached_contexts,
|
||||
};
|
||||
let memoryUsage = process.memoryUsage();
|
||||
statistics.nodeMemoryUsage = {
|
||||
rss: memoryUsage.rss,
|
||||
heapTotal: memoryUsage.heapTotal,
|
||||
heapUsed: memoryUsage.heapUsed,
|
||||
external: memoryUsage.external,
|
||||
};
|
||||
}
|
||||
// End: Show Nodejs heap stats at Standalone WeKan.
|
||||
//
|
||||
// Remove beginning of Meteor release text METEOR@
|
||||
let meteorVersion = Meteor.release;
|
||||
meteorVersion = meteorVersion.replace('METEOR@', '');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue