Welcome to Ghost

WordPress, Jekyll, Octopress 等等折腾了一圈最终还是 Ghost 更好用些。 竟然超过一年没更新了,ORZ。。。 »

一次网络超时的 Debug 过程

线上有部分机器连接外部存储时经常会会发生读写超时,通过 sar 工具查看网卡流量并不是太高,千兆网卡流入流出带宽只达到一半左右: $ sar -n DEV 2 01:59:39 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s »

谁修改了我的 Zookeeper 节点

zookeeper 集群一共有 5 台机器组成,上边记录的是应用程序的配置信息和进度信息。 程序在完成一些阶段性工作之后会将当前进度保存到 zk 上,这样就能够在程序意外 crash 之后能够恢复上次的进度。 之后发现本来某一个进程专属的 zk 进度点被多个进程修改,表现就是当正常的进程退出之后,节点的 mtime 以及 version 值依然在变化(节点本身的值一直是 0,看不到明显变化)。 现在的问题就是找到到底是谁在修改这个节点? zookeeper 日志 »

zookeeper client使用笔记

本文是最近使用zookeeper client时所看资料的一些总结,主要内容来自Zookeeper的官方手册,以及FAQ文档。 Zookeeper数据模型 zk具有像文件系统一样的层状的命名空间。 命名空间中的每一个节点都可存储数据。 只有绝对路径,名字都是unicode字符。 每个节点都是ZNode类型(如同文件系统的stat)。 每个ZNode上可以设置Watch,znode改变会通知设置的watch的客户端,同时清除Watch 每次对znode的读写都是原子的,每次读写都是带要操作znode版本号的。 尽量保证单个znode在1MB一下。通常几K。 临时节点的概念:只存在于一个Session的有效期内的节点。临时节点不允许有子节点。 使用zxid来标示zk中的每个事件(导致zk状态改变的事件)。全局唯一。 对每个znode的改变触发当前znode versions的改变 »

Linux Shell编程几则

2012真是不安稳,才放假回来线上服务就各种问题==# 好一点的直接出core,还算有的调试。还有直接莫名其妙Hang住的,而且之前设计的运行监控在这个关键时刻也失灵了。为了保证服务进程运行正常,我们自己写了一套进程监控脚本,当服务异常时会报警或是重启服务。经过检查发现正是这个监控脚本的问题,记录在此。 在Shell中获取制定进程的CPU和内存占用量 对进程监控主要的监控指标就那么几个:cpu,内存,运行状态等等。手工查看的很容易,可以直接使用所有Linux发行版都带的Top工具和PS工具,或是使用自己装的更专业的Sar之类的管理工具。直接运行top会默认进入一个不断刷新的curse屏幕,上边按照一定的规则动态显示系统中全部进程的信息,其中就包括PID,优先级,虚拟内存占用量,实际内存占用率,CUP占用率等等 »