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.inilocalip=CheckInterval=5group=defaultpriority=100system_res_mem=3072statsEnable=1#statsIntervalNum: the interval that update statistics(unit is CheckInterval). default is 600s or 10minstatsIntervalNum=12#showStatIntervalSec: The statistics interval to be show(unit is second). 5min/1hour/1dayshowStatIntervalSec=60,3600,86400[memcached]mc_maxmem=4096mc_meta_size=16mc_count=-1mc_args=-u nobody -d -c 10240 -o tail_repair_time=7200 slab_reassign slab_automovemc_port=11211mc_port_step=10mc_fpath=/usr/bin/memcachedmc_enabled=1mc_port_file=/var/log/yagent_mc_port.cfg[redis]peers=timeout=60redis_maxmem=128redis_meta_size=128redis_count=-1redis_port=16379redis_port_step=10redis_conf=/etc/redis/redis.confredis_fpath=/usr/local/bin/redis-serverredis_enabled=0redis_port_file=/var/log/yagent_redis_port.cfgcheck_master_interval=1get_slaves_interval=100
[root@whtest144-57 11685]# pstack 11685Thread 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 ...
随机推荐
- O010、动手实践虚拟网络
参考https://www.cnblogs.com/CloudMan6/p/5296573.html 本节将演示如何在实验环境中实现下图所示的虚拟网络
- 第三篇 HTML 表单及表格
表单及表格 表单,常用在登录.注册等地方,这也是一个最基本的. 我们就用登录,来学习什么是表单! 表单 form 标签,在某些好用的编辑工具,比如:WebStorm 你在上面写出form再按 ...
- Python新式类与经典类(旧式类)的区别
看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...
- Spring Boot 实际操作
1.什么是springboot 2.springboot的很多默认编码方式都是utf-8,真是福利啊. 3.spring boot如何启动和访问和MocMvc测试 4.开发环境的调试热启动 5.app ...
- 让IE6、IE7、IE8、IE9、IE10、IE11支持Bootstrap的解决方法
最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没 ...
- RAID原理详解
RAID 0(stripe,条带化存储):在RAID级别中最高的存储性能. 原理:是把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于他自己的那部分数据请求. ...
- 关于Java中线程取值并返回的方法
如何让一个线程不断跑起来,并且在取到值的时候能返回值而线程能继续跑呢? 我们都知道可以用Callable接口获得线程的返回值,或者触发事件监听来操作返回值,下面我将介绍另一种方法. public ab ...
- Python核心技术与实战——二十|Python的垃圾回收机制
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现, ...
- re模块的小练习
1.匹配标签 1 import re 2 ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','< ...
- MAC使用终端DISKUTIL命令给U盘分区(解决window优盘只有200M)
1.先使用diskutil list命令查看U盘代号 2.然后用下面的命令把它格式化: sudo diskutil eraseDisk FAT32 USB_NAME MBRFormat /dev/di ...