内涵Golang DAO

背景: 内涵近段时间迁移了部分API代码到Golang,主要是为了使用Golang中方便的goroutine。但是开发中很多冗余代码需要重复开发(缺少一个组件能够收敛各种RPC调用,复用代码,减少开发量),同时,又不希望组件使用过多的黑魔法,导致结构复杂,开发维护麻烦。 要求 综上...

展开...

机器内存爆满问题排查

1 背景 两周前广告开屏服务突然503报警不断,先查看了各种业务监控没发现流量等有什么大变化,因为不久之前出过一次机器出问题的情况,马上去查看了机器是不是正常,果然内存几乎涨满了。大概十来分钟内存就会达到90%多,然后进程就重启了,但是从日志来看并没有什么异常情况,好在并没有将机器拖死。当时第一件事...

展开...

mc集群写入恍惚问题排查

1.现象 业务方反馈在向memcache集群写入数据时,出现不稳定。表现为向mc写入一个creative和ad对象的list,有的时候能写进去并读出来,有的时候写成功但是读不出来。 2.问题排查 2.1 复现问题 a.有的key没有问题,能够一直写+读。 b.有的key一直都是写ok,读None。...

展开...

Redis migrate slots丢key排查

1.问题 redis slots迁移的时候,在迁移之后key数量会变少. 2.排查 2.1思考 redis 3.x也是比较成熟的产品了,为什么会丢key?别人有没有遇到同样的问题? 假设丢key了,如果key是因为expire丢失,那应该是正常,如果没有expire丢失,就是问题了,首先复现问题。...

展开...

日志辅助工具timecat

今天我要分享一个用于对日志文件进行二分查找的工具:timecat 0 用途 在线演示页面:http://aap.reetsee.com/page/timecat 不想看后面的直接看这一节就行。 timecat可以对线上的所有日志进行二分查找,常见需求是到了线上机器后想将某个时间段的日志直接读出来,不...

展开...

线上问题深度追查:信号处理函数中的死锁

这是一则关于死锁的故事,谨以此文进行记录分享。 背景 svc是deamon-tools工具集中用户守护进程的服务,头条目前在线上使用它来保证服务的存活(目前正在切换到更可靠的systemd)。当进程挂掉时,svc能自动重启挂掉的进程,当被监控的进程有代码更新时,我们可以通过svc发送命令让进程...

展开...