perf(backend): lazy load systeminformation
systeminformationを必要とする機能を有効にしていないサーバーで無駄に読み込まれることが無いように
This commit is contained in:
parent
dba44daf9c
commit
baeed4bc80
|
|
@ -7,7 +7,6 @@ import * as fs from 'node:fs';
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { dirname } from 'node:path';
|
import { dirname } from 'node:path';
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import si from 'systeminformation';
|
|
||||||
import { Mutex } from 'async-mutex';
|
import { Mutex } from 'async-mutex';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import { bindThis } from '@/decorators.js';
|
import { bindThis } from '@/decorators.js';
|
||||||
|
|
@ -84,6 +83,7 @@ export class AiService {
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
private async getCpuFlags(): Promise<string[]> {
|
private async getCpuFlags(): Promise<string[]> {
|
||||||
|
const si = await import('systeminformation');
|
||||||
const str = await si.cpuFlags();
|
const str = await si.cpuFlags();
|
||||||
return str.split(/\s+/);
|
return str.split(/\s+/);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import si from 'systeminformation';
|
|
||||||
import Xev from 'xev';
|
import Xev from 'xev';
|
||||||
import * as osUtils from 'os-utils';
|
import * as osUtils from 'os-utils';
|
||||||
import { bindThis } from '@/decorators.js';
|
import { bindThis } from '@/decorators.js';
|
||||||
import type { OnApplicationShutdown } from '@nestjs/common';
|
|
||||||
import { MiMeta } from '@/models/_.js';
|
import { MiMeta } from '@/models/_.js';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
|
import type { OnApplicationShutdown } from '@nestjs/common';
|
||||||
|
|
||||||
const ev = new Xev();
|
const ev = new Xev();
|
||||||
|
|
||||||
|
|
@ -97,12 +96,14 @@ function cpuUsage(): Promise<number> {
|
||||||
|
|
||||||
// MEMORY STAT
|
// MEMORY STAT
|
||||||
async function mem() {
|
async function mem() {
|
||||||
|
const si = await import('systeminformation');
|
||||||
const data = await si.mem();
|
const data = await si.mem();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NETWORK STAT
|
// NETWORK STAT
|
||||||
async function net() {
|
async function net() {
|
||||||
|
const si = await import('systeminformation');
|
||||||
const iface = await si.networkInterfaceDefault();
|
const iface = await si.networkInterfaceDefault();
|
||||||
const data = await si.networkStats(iface);
|
const data = await si.networkStats(iface);
|
||||||
return data[0];
|
return data[0];
|
||||||
|
|
@ -110,5 +111,6 @@ async function net() {
|
||||||
|
|
||||||
// FS STAT
|
// FS STAT
|
||||||
async function fs() {
|
async function fs() {
|
||||||
|
const si = await import('systeminformation');
|
||||||
return await si.disksIO().catch(() => ({ rIO_sec: 0, wIO_sec: 0 }));
|
return await si.disksIO().catch(() => ({ rIO_sec: 0, wIO_sec: 0 }));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as os from 'node:os';
|
import * as os from 'node:os';
|
||||||
import sysUtils from 'systeminformation';
|
|
||||||
import type Logger from '@/logger.js';
|
import type Logger from '@/logger.js';
|
||||||
|
|
||||||
export async function showMachineInfo(parentLogger: Logger) {
|
export async function showMachineInfo(parentLogger: Logger) {
|
||||||
const logger = parentLogger.createSubLogger('machine');
|
const logger = parentLogger.createSubLogger('machine');
|
||||||
logger.debug(`Hostname: ${os.hostname()}`);
|
logger.debug(`Hostname: ${os.hostname()}`);
|
||||||
logger.debug(`Platform: ${process.platform} Arch: ${process.arch}`);
|
logger.debug(`Platform: ${process.platform} Arch: ${process.arch}`);
|
||||||
const mem = await sysUtils.mem();
|
logger.debug(`CPU: ${os.cpus().length} core MEM: ${(os.totalmem() / 1024 / 1024 / 1024).toFixed(1)}GB (available: ${(os.freemem() / 1024 / 1024 / 1024).toFixed(1)}GB)`);
|
||||||
const totalmem = (mem.total / 1024 / 1024 / 1024).toFixed(1);
|
|
||||||
const availmem = (mem.available / 1024 / 1024 / 1024).toFixed(1);
|
|
||||||
logger.debug(`CPU: ${os.cpus().length} core MEM: ${totalmem}GB (available: ${availmem}GB)`);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as os from 'node:os';
|
import * as os from 'node:os';
|
||||||
import si from 'systeminformation';
|
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import { DataSource } from 'typeorm';
|
import { DataSource } from 'typeorm';
|
||||||
import * as Redis from 'ioredis';
|
import * as Redis from 'ioredis';
|
||||||
|
|
@ -112,6 +111,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
|
|
||||||
) {
|
) {
|
||||||
super(meta, paramDef, async () => {
|
super(meta, paramDef, async () => {
|
||||||
|
const si = await import('systeminformation');
|
||||||
|
|
||||||
const memStats = await si.mem();
|
const memStats = await si.mem();
|
||||||
const fsStats = await si.fsSize();
|
const fsStats = await si.fsSize();
|
||||||
const netInterface = await si.networkInterfaceDefault();
|
const netInterface = await si.networkInterfaceDefault();
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as os from 'node:os';
|
import * as os from 'node:os';
|
||||||
import si from 'systeminformation';
|
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
import { MiMeta } from '@/models/_.js';
|
import { MiMeta } from '@/models/_.js';
|
||||||
|
|
@ -93,6 +92,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const si = await import('systeminformation');
|
||||||
|
|
||||||
const memStats = await si.mem();
|
const memStats = await si.mem();
|
||||||
const fsStats = await si.fsSize();
|
const fsStats = await si.fsSize();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue