yagent使用说明
yagent是ycache的一个组件,用于管理memcached或redis的缓存实例。主要功能包括启动cache实例、将cache实例的信息写到zk上给yconsole使用、检测cache实例的状态并做实例级别的故障恢复、redis主备切换的切换、缓存的简单统计信息收集等功能。
yagen的原理很简单,它是cache服务器上的一个守护进程,并且按照配置要求启动很多cache实例(例如可配置每个cache实例4G空间,那32G内存的服务器就自动起7个实例,预留一些内存给系统使用),并调用kazoo的zk接口将cache服务器和cache实例的信息写到zk上。它在zk上创建了一个ephemeral状态节点标明自己是否处于active状态; 然后它没5s检测一次所有实例的状态(通过向cache实例获取一个key来检测),如果这个cache实例响应超时,就直接重启这个cache实例(很暴力,直接kill -9后从新启动)。当然,它会向yhd的监控系统发一个告警信息。。
设计一个简单的统计功能,初衷有两个:
- 可以在yconsole上很容易看到一些比较重要的统计信息,例如命中率、get/set命令的速度、evicted的数量、key总数等。这样可以方便的对比同一个cache id内部负载是否均匀;不同的机器之间负载是否均衡。
- 可以在分配机器给新的cache id的时候,选取负载低的机器,从而更好的实现负载均衡。
配置项很简单,看名字就明白内部做了什么动作了。
[global]
zoo_svr=
cf_svr_file=/var/www/config/env.ini
localip=
CheckInterval=5
group=default
priority=100
system_res_mem=3072
statsEnable=1
#statsIntervalNum: the interval that update statistics(unit is CheckInterval). default is 600s or 10min
statsIntervalNum=12
#showStatIntervalSec: The statistics interval to be show(unit is second). 5min/1hour/1day
showStatIntervalSec=60,3600,86400
[memcached]
mc_maxmem=4096
mc_meta_size=16
mc_count=-1
mc_args=-u nobody -d -c 10240 -o tail_repair_time=7200 slab_reassign slab_automove
mc_port=11211
mc_port_step=10
mc_fpath=/usr/bin/memcached
mc_enabled=1
mc_port_file=/var/log/yagent_mc_port.cfg
[redis]
peers=
timeout=60
redis_maxmem=128
redis_meta_size=128
redis_count=-1
redis_port=16379
redis_port_step=10
redis_conf=/etc/redis/redis.conf
redis_fpath=/usr/local/bin/redis-server
redis_enabled=0
redis_port_file=/var/log/yagent_redis_port.cfg
check_master_interval=1
get_slaves_interval=100
[root@whtest144-57 11685]# pstack 11685
Thread 3 (Thread 0x2b5b4a6d6940 (LWP 11704)):
#0 0x000000348580ce51 in sem_wait () from /lib64/libpthread.so.0
#1 0x00000000004bf8fd in PyThread_acquire_lock ()
#2 0x00000000004c27c0 in lock_PyThread_acquire_lock ()
#3 0x0000000000493ca5 in PyEval_EvalFrameEx ()
#4 0x00000000004945f5 in PyEval_EvalCodeEx ()
#5 0x0000000000492331 in PyEval_EvalFrameEx ()
#6 0x00000000004945f5 in PyEval_EvalCodeEx ()
#7 0x0000000000492331 in PyEval_EvalFrameEx ()
#8 0x00000000004945f5 in PyEval_EvalCodeEx ()
#9 0x00000000004ea56c in function_call ()
#10 0x0000000000417bbd in PyObject_Call ()
#11 0x000000000048e945 in PyEval_EvalFrameEx ()
#12 0x00000000004932a8 in PyEval_EvalFrameEx ()
#13 0x00000000004932a8 in PyEval_EvalFrameEx ()
#14 0x00000000004945f5 in PyEval_EvalCodeEx ()
#15 0x00000000004ea46d in function_call ()
#16 0x0000000000417bbd in PyObject_Call ()
#17 0x000000000041ef4f in instancemethod_call ()
#18 0x0000000000417bbd in PyObject_Call ()
#19 0x000000000048bfb6 in PyEval_CallObjectWithKeywords ()
#20 0x00000000004c2bcd in t_bootstrap ()
#21 0x000000348580683d in start_thread () from /lib64/libpthread.so.0
#22 0x0000003484cd526d in clone () from /lib64/libc.so.6
yagent使用说明的更多相关文章
- ycache分布式缓存框架
介绍 ycache是yhd的分布是缓存框架,设计目的是提供易扩展.高可靠的分布式缓存系统.ycache从全局视角分配和管理缓存,检测缓存的状态并做故障恢复. 当应用(应用:使用ycache的上 ...
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- Oracle 中 union 和union all 的简单使用说明
1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...
- Map工具系列-02-数据迁移工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- Map工具系列-03-代码生成BySQl工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- jQuery验证控件jquery.validate.js使用说明
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- gdbsever 使用说明
gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...
随机推荐
- 浅析HBase:为高效的可扩展大规模分布式系统而生
什么是HBase Apache HBase是运行在Hadoop集群上的数据库.为了实现更好的可扩展性(scalability),HBase放松了对ACID(数据库的原子性,一致性,隔离性和持久性)的要 ...
- 一头扎进 JAVA
硅不可 吉米 JAVA 基础 -- 基础不牢,地动山摇 子类应该比 父类更为 开放 (public protected default private) 子类方法不能比父类抛出更高异常( 可以为父类方 ...
- Ubuntu - 14.04下,GO语言的安装!
一,下载GO语言的安装文件,我直接下载GO语言的安装包(64位),并不是源码: 下载地址: 64位:https://storage.googleapis.com/golang/go1.6.linux- ...
- linux shell 数组的使用
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
- linux命令详解——vim
显示行号:命令模式下set nu 定位到指定行: 命令模式下,:n 比如想到第2行,:2 编辑模式下,ngg 比如想到第5行 5gg(或者5G) 打开文件定位到指定行 vim +n te ...
- yum源遇到的问题
1.在配置CentOS的本地yum源时,所遇到的问题,本地yum设置失败 步骤: vim /etc/yum.repos.d/local.repo 设置本地源 可能会遇到本地源问题,注意使用tab键 ...
- java8学习之内部迭代与外部迭代本质剖析及流本源分析
关于Stream在Java8中是占非常主要的地位的,所以这次对它进行进一步探讨[这次基本上都是偏理论的东东,但是理解它很重要~],其实流跟咱们数据库学习当中的sql语句的特点是非常非常之像的,为什么这 ...
- Django学习系列12:把Python变量传入模板中渲染
从视图的Python代码中把变量传入HTML模板. 模板中使用哪种句法引入Python对象,要使用的符号{{...}},它会以字符串的形式显示对象: <html> <head> ...
- HDU - 6396 Swordsman (单调性+贪心)
题意:有n个怪物和k种属性,当且仅当你的每种属性都大于等于怪物的属性才可以击杀它,且击杀怪物可以提升你一定的属性值.求可击杀怪物的最大数量以最终的属性值. 这不就是银行家算法里的安全性检验么? 本题的 ...
- JAVA》eclipse——(一)jdk的下载、安装与配置
http://www.cnblogs.com/best/p/6275334.html 注:这是一位老师的博客随笔链接,不是我的,里面有详细的说明,分享给大家,如果想看其他关于IT的知识,可以访问 ht ...