Weakyon Blog

Weakyon

初识GO语言

记录下踩到的坑 一 接口 package main import ( ...

codis3.0高可用方案分析

一 HA代码 二 Promote指令 [三 SyncCreateAction指令] (#jump3-0) 四 Codis高可用方案的优化 codis3.0内置了ha方案(在3.0以前ha是独立项目) 本文大致分析一下他的代码,试图找出他这样设计的目的,是否还存在什么缺点以及分析缺点的解决方案 本文的对象是对redis集群有一定经验,基本了解过codis方案的读者 一...

linux下超时重传时间(RTO)的实现探究

最近出现了网络超时的问题要排查,大致按照如图思路去排查 排除了代码逻辑问题,TCP相关可能的BUG,内核参数等问题后 在排查KVM问题时,在同一个宿主机的不同KVM上,复现了超时问题。 发现大部分异常连接时长都在1s左右,通过抓包分析,可以看到这部分的包被重传了,重传的时间固定为1秒。 这里重传时间为什么是1秒呢,相关的标准和实际实现是怎样的呢? 本文主要讨论的就是这部分内容(...

zookeeper c 客户端源码分析以及使用注意点

zookeeper的库用起来很麻烦,建议使用我封装的zookeeper c库,能考虑更少的zookeeper本身的逻辑 链接: ylibzkevent 在上一篇文章查CLOSE_WAIT泄漏问题的时候稍微看了下zookeeper c源码,大致对他的流程来做一个分析。 zookeeper的C客户端分为mt库和st库(多线程和单线程),一般操作都是以多线程库为主。 多线程库分为三个...

pipeline模式的理解

对于C/S模型而言,传统的请求和回复是这样的 req -------------> <------------- rsp req -------------> <------------- rsp req -------------> <------------- rsp 而pipeline模式是这样的 req1 ...

gtest使用说明

为了提高代码质量,在同事的帮助下学习了如何使用gtest进行单元测试 准备工作 1 首先从googlecode上下载gtest的源码(googlecode明年一月即将关闭不知道这个项目会何去何从呢) 解压后参考README文件进行编译 GTEST_TARGET=googletest ./travis.sh GTEST_TARGET=googlemock ./travis.sh ...

使用fork后的文件描述符泄漏问题

首先这个问题相当小白,如果已经了解的同学看到这个标题应该就明白了,就能略过不看了。 我遇到这个问题是对改造的twemproxy做异常测试时出现的。 首先简介一下改造的多进程版本的twemproxy原理。 改造的twemproxy会连接zk去获取一些信息,建立监视使得后端redis掉线(使用一个watchdog来将redis注册到zookeeper上)能够通过zookeeper被通知到。...

RTO对tcp超时的影响

一 RFC标准 二 对linux的实际实现进行抓包分析 三 linux对超时的判断 四 linux的对RTO计算的实际实现 五 人为介入修改RTO的方法 六 总结 经常能看到线上的服务器报出超时,除了自己代码的问题,因为网络环境导致超时的原因是各种各样的: 硬件上:各层交换机微突发;芯片转发;链路,网卡阻塞等等 软件上:在负载较高的情况下,KVM之类的虚拟化性能更不上(同一宿...

linux的内存管理介绍

内存方面的知识真是博大精深,把一些看到的零碎的知识点做个笔记总结下。 这些知识只是自己的理解,并不能保证正确,ULK和《深入理解Linux虚拟内存管理》这两本书看完以后还会来更新这篇的内容。 段式管理与页式管理 linux下的段页式管理 linux下的内存分布 内存相关的一些工具 free top 段式管理与页式管理 在操作系统理论中 段式管理就是...

如何创建这样的blog(2)--解决爬虫无法爬取git个人博客的问题

解决爬虫的爬取问题 gitcafe创建项目 配置域名 CDN配置优化 后备方案 继如何创建这样一个blog这一篇已经过去快一年了。 然而最近遇到一个新的问题,各大搜索引擎毫无流量。因此写了文章后,除了几个朋友以外也没人看。 我认为我的文章也不是百分百正确的,没大神来评论批评我怎么知道我错哪儿了呢。 解决爬虫的爬取问题 然后我看到知乎这个帖子如何解决百...