Commit 2f174b28 authored by mercury233's avatar mercury233

update & fix get_memory_usage

parent cfa53219
...@@ -6,6 +6,7 @@ path = require 'path' ...@@ -6,6 +6,7 @@ path = require 'path'
fs = require 'fs' fs = require 'fs'
os = require 'os' os = require 'os'
crypto = require 'crypto' crypto = require 'crypto'
exec = require('child_process').exec
execFile = require('child_process').execFile execFile = require('child_process').execFile
spawn = require('child_process').spawn spawn = require('child_process').spawn
spawnSync = require('child_process').spawnSync spawnSync = require('child_process').spawnSync
...@@ -196,20 +197,26 @@ if settings.modules.mycard.enabled ...@@ -196,20 +197,26 @@ if settings.modules.mycard.enabled
pg_client.connect() pg_client.connect()
# 获取可用内存 # 获取可用内存
memory_usage = 0
get_memory_usage = ()-> get_memory_usage = ()->
prc_free = spawnSync("free", []) prc_free = exec("free")
if (prc_free.stdout) prc_free.stdout.on 'data', (data)->
lines = prc_free.stdout.toString().split(/\n/g) lines = data.toString().split(/\n/g)
line = lines[0].split(/\s+/)
new_free = if line[6] == 'available' then true else false
line = lines[1].split(/\s+/) line = lines[1].split(/\s+/)
total = parseInt(line[1], 10) total = parseInt(line[1], 10)
free = parseInt(line[3], 10) free = parseInt(line[3], 10)
buffers = parseInt(line[5], 10) buffers = parseInt(line[5], 10)
cached = parseInt(line[6], 10) if new_free
actualFree = free + buffers + cached actualFree = parseInt(line[6], 10)
else
cached = parseInt(line[6], 10)
actualFree = free + buffers + cached
percentUsed = parseFloat(((1 - (actualFree / total)) * 100).toFixed(2)) percentUsed = parseFloat(((1 - (actualFree / total)) * 100).toFixed(2))
else memory_usage = percentUsed
percentUsed = 0 get_memory_usage()
return percentUsed setInterval(get_memory_usage, 3000)
Cloud_replay_ids = [] Cloud_replay_ids = []
...@@ -261,7 +268,7 @@ ROOM_find_or_create_by_name = (name, player_ip)-> ...@@ -261,7 +268,7 @@ ROOM_find_or_create_by_name = (name, player_ip)->
return ROOM_find_or_create_random(uname, player_ip) return ROOM_find_or_create_random(uname, player_ip)
if room = ROOM_find_by_name(name) if room = ROOM_find_by_name(name)
return room return room
else if get_memory_usage() >= 90 else if memory_usage >= 90
return null return null
else else
return new Room(name) return new Room(name)
...@@ -292,7 +299,7 @@ ROOM_find_or_create_random = (type, player_ip)-> ...@@ -292,7 +299,7 @@ ROOM_find_or_create_random = (type, player_ip)->
if result if result
result.welcome = '${random_duel_enter_room_waiting}' result.welcome = '${random_duel_enter_room_waiting}'
#log.info 'found room', player_name #log.info 'found room', player_name
else if get_memory_usage() < 90 else if memory_usage < 90
type = if type then type else 'S' type = if type then type else 'S'
name = type + ',RANDOM#' + Math.floor(Math.random() * 100000) name = type + ',RANDOM#' + Math.floor(Math.random() * 100000)
result = new Room(name) result = new Room(name)
......
// Generated by CoffeeScript 1.12.7 // Generated by CoffeeScript 1.12.7
(function() { (function() {
var Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_players_banned, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, Room, _, addCallback, badwords, ban_user, bunyan, clearlog, config, cppversion, crypto, date, default_config, default_data, dialogues, duel_log, e, execFile, fs, geoip, get_memory_usage, http, http_server, https, https_server, lflists, list, load_dialogues, load_tips, log, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldtips, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_bin, windbot_parameters, windbot_process, windbots, ygopro, zlib; var Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_players_banned, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, Room, _, addCallback, badwords, ban_user, bunyan, clearlog, config, cppversion, crypto, date, default_config, default_data, dialogues, duel_log, e, exec, execFile, fs, geoip, get_memory_usage, http, http_server, https, https_server, lflists, list, load_dialogues, load_tips, log, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldtips, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_bin, windbot_parameters, windbot_process, windbots, ygopro, zlib;
net = require('net'); net = require('net');
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
crypto = require('crypto'); crypto = require('crypto');
exec = require('child_process').exec;
execFile = require('child_process').execFile; execFile = require('child_process').execFile;
spawn = require('child_process').spawn; spawn = require('child_process').spawn;
...@@ -258,24 +260,35 @@ ...@@ -258,24 +260,35 @@
pg_client.connect(); pg_client.connect();
} }
memory_usage = 0;
get_memory_usage = function() { get_memory_usage = function() {
var actualFree, buffers, cached, free, line, lines, percentUsed, prc_free, total; var prc_free;
prc_free = spawnSync("free", []); prc_free = exec("free");
if (prc_free.stdout) { return prc_free.stdout.on('data', function(data) {
lines = prc_free.stdout.toString().split(/\n/g); var actualFree, buffers, cached, free, line, lines, new_free, percentUsed, total;
lines = data.toString().split(/\n/g);
line = lines[0].split(/\s+/);
new_free = line[6] === 'available' ? true : false;
line = lines[1].split(/\s+/); line = lines[1].split(/\s+/);
total = parseInt(line[1], 10); total = parseInt(line[1], 10);
free = parseInt(line[3], 10); free = parseInt(line[3], 10);
buffers = parseInt(line[5], 10); buffers = parseInt(line[5], 10);
cached = parseInt(line[6], 10); if (new_free) {
actualFree = free + buffers + cached; actualFree = parseInt(line[6], 10);
} else {
cached = parseInt(line[6], 10);
actualFree = free + buffers + cached;
}
percentUsed = parseFloat(((1 - (actualFree / total)) * 100).toFixed(2)); percentUsed = parseFloat(((1 - (actualFree / total)) * 100).toFixed(2));
} else { return memory_usage = percentUsed;
percentUsed = 0; });
}
return percentUsed;
}; };
get_memory_usage();
setInterval(get_memory_usage, 3000);
Cloud_replay_ids = []; Cloud_replay_ids = [];
ROOM_all = []; ROOM_all = [];
...@@ -356,7 +369,7 @@ ...@@ -356,7 +369,7 @@
} }
if (room = ROOM_find_by_name(name)) { if (room = ROOM_find_by_name(name)) {
return room; return room;
} else if (get_memory_usage() >= 90) { } else if (memory_usage >= 90) {
return null; return null;
} else { } else {
return new Room(name); return new Room(name);
...@@ -395,7 +408,7 @@ ...@@ -395,7 +408,7 @@
}); });
if (result) { if (result) {
result.welcome = '${random_duel_enter_room_waiting}'; result.welcome = '${random_duel_enter_room_waiting}';
} else if (get_memory_usage() < 90) { } else if (memory_usage < 90) {
type = type ? type : 'S'; type = type ? type : 'S';
name = type + ',RANDOM#' + Math.floor(Math.random() * 100000); name = type + ',RANDOM#' + Math.floor(Math.random() * 100000);
result = new Room(name); result = new Room(name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment