pull/109/head
midoks 7 years ago
parent 7ef22d011a
commit 5bfed66c11
  1. 3
      plugins/memcached/index.html
  2. 82
      plugins/memcached/index.py
  3. 10
      plugins/memcached/init.d/memcached.tpl
  4. 33
      plugins/memcached/js/mem.js

@ -3,9 +3,8 @@
<div class="bt-w-menu">
<p class="bgw" onclick="pluginService('memcached');">服务</p>
<p onclick="pluginConfig('memcached');">配置修改</p>
<p onclick="redisConfig();">切换版本</p>
<p onclick="memcachedStatus();">负载状态</p>
<p onclick="redisStatus();">性能调整</p>
<p onclick="memcachedCache();">性能调整</p>
</div>
<div class="bt-w-con pd15">
<div class="soft-man-con"></div>

@ -19,8 +19,8 @@ def status():
def initDreplace():
file_tpl = os.getcwd() + '/plugins/memcached/init.d/memcached.tpl'
file_bin = getConf()
file_tpl = getConf()
file_bin = os.getcwd() + '/plugins/memcached/init.d/memcached'
if os.path.exists(file_bin):
return file_bin
@ -28,7 +28,7 @@ def initDreplace():
content = public.readFile(file_tpl)
service_path = os.path.dirname(os.getcwd())
content = content.replace('{$PATH}', service_path)
content = content.replace('{$SERVER_PATH}', service_path)
public.writeFile(file_bin, content)
public.execShell('chmod +x ' + file_bin)
@ -71,47 +71,63 @@ def runInfo():
# 获取memcached状态
import telnetlib
import re
tn = telnetlib.Telnet('127.0.0.1', 11211)
tn.write(b"stats\n")
tn.write(b"quit\n")
data = tn.read_all()
if type(data) == bytes:
data = data.decode('utf-8')
data = data.replace('STAT', '').replace('END', '').split("\n")
result = {}
res = ['cmd_get', 'get_hits', 'get_misses', 'limit_maxbytes', 'curr_items', 'bytes',
'evictions', 'limit_maxbytes', 'bytes_written', 'bytes_read', 'curr_connections']
for d in data:
if len(d) < 3:
continue
t = d.split()
if not t[0] in res:
continue
result[t[0]] = int(t[1])
result['hit'] = 1
if result['get_hits'] > 0 and result['cmd_get'] > 0:
result['hit'] = float(result['get_hits']) / \
float(result['cmd_get']) * 100
conf = public.readFile(getConf())
result['bind'] = re.search('IP=(.+)', conf).groups()[0]
result['port'] = int(re.search('PORT=(\d+)', conf).groups()[0])
result['maxconn'] = int(re.search('MAXCONN=(\d+)', conf).groups()[0])
result['cachesize'] = int(
re.search('CACHESIZE=(\d+)', conf).groups()[0])
return public.getJson(result)
try:
tn = telnetlib.Telnet('127.0.0.1', 11211)
tn.write(b"stats\n")
tn.write(b"quit\n")
data = tn.read_all()
if type(data) == bytes:
data = data.decode('utf-8')
data = data.replace('STAT', '').replace('END', '').split("\n")
result = {}
res = ['cmd_get', 'get_hits', 'get_misses', 'limit_maxbytes', 'curr_items', 'bytes',
'evictions', 'limit_maxbytes', 'bytes_written', 'bytes_read', 'curr_connections']
for d in data:
if len(d) < 3:
continue
t = d.split()
if not t[0] in res:
continue
result[t[0]] = int(t[1])
result['hit'] = 1
if result['get_hits'] > 0 and result['cmd_get'] > 0:
result['hit'] = float(result['get_hits']) / \
float(result['cmd_get']) * 100
conf = public.readFile(getConf())
result['bind'] = re.search('IP=(.+)', conf).groups()[0]
result['port'] = int(re.search('PORT=(\d+)', conf).groups()[0])
result['maxconn'] = int(re.search('MAXCONN=(\d+)', conf).groups()[0])
result['cachesize'] = int(
re.search('CACHESIZE=(\d+)', conf).groups()[0])
return public.getJson(result)
except Exception, e:
return public.getJson({})
def getConf():
path = os.getcwd() + "/plugins/memcached/init.d/memcached.tpl"
return path
def saveConf():
args = sys.argv[2]
if args == '':
return 'fail'
print args
if __name__ == "__main__":
func = sys.argv[1]
print sys.argv
if func == 'run_info':
print runInfo()
elif func == 'conf':
print getConf()
elif func == 'save_conf':
print saveConf()
elif func == 'status':
print status()
elif func == 'start':
@ -122,3 +138,5 @@ if __name__ == "__main__":
print restart()
elif func == 'reload':
print reload()
else:
print 'fail'

@ -27,9 +27,11 @@ OPTIONS=""
RETVAL=0
prog="memcached"
MEM_PATH={$SERVER_PATH}/memcached
start () {
echo -n $"Starting $prog: "
{$PATH}/memcached/bin/memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P {$PATH}/memcached/memcached.pid $OPTIONS
$MEM_PATH/bin/memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P $MEM_PATH/memcached.pid $OPTIONS
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
@ -39,16 +41,16 @@ start () {
}
stop () {
echo -n $"Stopping $prog: "
if [ ! -e {$PATH}/memcached/$prog.pid ]; then
if [ ! -e $MEM_PATH/$prog.pid ]; then
echo -n $"$prog is not running."
exit 1
fi
kill `cat {$PATH}/memcached/memcached.pid`
kill `cat $MEM_PATH/memcached.pid`
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
else
rm -f {$PATH}/memcached/memcached.pid
rm -f ${MEM_PATH}/memcached.pid
echo " done"
fi
}

@ -5,12 +5,18 @@
function memcachedStatus() {
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'memcached', func:'run_info'}, function(data) {
if (!data.status){
layer.close(loadT);
if (!data.status){
showMsg(data.msg, function(){}, null,13000);
return;
}
layer.close(loadT);
var rdata = $.parseJSON(data.data);
if ($.isEmptyObject(rdata)){
showMsg('memcached服务没有启动!', function(){}, undefined, 3000);
return;
}
var Con = '<div class="divtable">\
<table class="table table-hover table-bordered" style="width: 490px;">\
<thead><th>字段</th><th></th><th></th></thead>\
@ -38,17 +44,29 @@ function memcachedStatus() {
//memcached性能调整
function memcachedCache() {
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.get('/ajax?action=GetMemcachedStatus', function(rdata) {
$.post('/plugins/run', {name:'memcached', func:'run_info'}, function(data) {
layer.close(loadT);
if (!data.status){
showMsg(data.msg, function(){}, null,13000);
return;
}
var rdata = $.parseJSON(data.data);
if ($.isEmptyObject(rdata)){
showMsg('memcached服务没有启动!', function(){}, undefined, 3000);
return;
}
var memCon = '<div class="conf_p" style="margin-bottom:0">\
<p><span>BindIP</span><input style="width: 120px;" class="bt-input-text mr5" name="membind" value="' + rdata.bind + '" type="text" ><font>IP,</font></p>\
<p><span>PORT</span><input style="width: 120px;" class="bt-input-text mr5" max="65535" name="memport" value="' + rdata.port + '" type="number" ><font>,</font></p>\
<p><span>CACHESIZE</span><input style="width: 120px;" class="bt-input-text mr5" name="memcachesize" value="' + rdata.cachesize + '" type="number" >MB,<font>,512M</font></p>\
<p><span>MAXCONN</span><input style="width: 120px;" class="bt-input-text mr5" name="memmaxconn" value="' + rdata.maxconn + '" type="number" ><font>,40960</font></p>\
<div style="margin-top:10px; padding-right:230px" class="text-right"><button class="btn btn-success btn-sm" onclick="SetMemcachedConf()">' + lan.public.save + '</button></div>\
<div style="margin-top:10px; padding-right:230px" class="text-right"><button class="btn btn-success btn-sm" onclick="setMemcachedConf()">保存</button></div>\
</div>'
$(".soft-man-con").html(memCon);
});
},'json');
}
//memcached提交配置
@ -79,9 +97,10 @@ function setMemcachedConf() {
layer.msg('最大连接数过小', { icon: 2 });
return;
}
var loadT = layer.msg('正在保存...', { icon: 16, time: 0, shade: 0.3 });
$.post('/ajax?action=SetMemcachedCache', data, function(rdata) {
$.post('/plugins/run', {name:'memcached', func:'save_conf',args:JSON.stringify(data) }, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
},'json');
}
Loading…
Cancel
Save