关于tcp socket出现的”connection reset by peer“和“broken pipe”

在socket通信过程中,经常发现客户端或者服务器的日志中出现“broken pipe”或者“connection reset by peer”的错误提示。之前一直以为自己理解了这两个错误异常提示所包含的意义,而实际理解完全错误。我的错误理解和
发表在 os/linux | 留下评论

如何寻找iowait元凶

最近在生产上,有实时计算的torm机器的磁盘oiwait间断性升高。这不是很正常的现象,storm 的数据直接通过网络进入内存,数据在内存流转。也就是storm并不会大量的读写磁盘文件,除了storm的Topology的日志会写到磁盘
发表在 os/linux | 留下评论

redis/twemproxy 客户端连接异常

对于一个DBA,客户端连接异常问题可以说是家常便饭的事情,处理多了都想吐。 root cause无疑发生在三个地方,先找自身的原因,依次排查下去: 1)服务器端db的负载,如果负载太高,创建socket太慢引起超时。另外服务
发表在 redis | 标签为 | 一条评论

redis主从复制(4)— client buffer

1、 client buffer的设计 redis server以单进程的方式处理接收到的请求,而redis完成请求有些工作比较慢,比如网络IO和磁盘IO等比较慢的操作。redis为了提高处理客户端请求的响应时间,做了很多优化。比如网络io和磁
发表在 redis | 标签为 , | 留下评论

redis主从复制(3)— 复制超时

1、repl-timeout 前两篇[1]关于redis主从复制的文章解释了一些因为slave replication buffer或者replication backlog参数的错误配置(或者默认参数值)导致主从复制中断的现象。redis里面的repl-timeout参数值也太小
发表在 redis | 标签为 , | 留下评论

redis主从复制(2)— replication buffer与replication backlog

1、redis主从复制过程 先不解释replication buffer和replication backlog,而先看看redis主从复制的过程。 redis的主从复制分为两个阶段: 1)同步(sync rdb snapshot):slave复制master的某时间点(t)的全量数据
发表在 redis | 标签为 , , | 2条评论

redis主从复制(1)— 慢查询导致复制中断

redis的异常行为是一件令人头疼的问题。redis提供的错误日志只提供了一些server的运行状态信息,而没有server在故障现场的操作日志,比如执行了什么命令,命令操作对象的数据结构信息。如果redis也有mysql的slow-log
发表在 redis | 标签为 , | 留下评论

redis-cli的一些有趣也很有用的功能

redis-cli我们最常用的三个参数就是-h、-p、-a选项,分配用来指定连接的redis-server的host、port和登录密码。 通过redis-cli –help发现,redis-cli还提供了其他很多的参数和功能。 1)-x -x选项从标准输入(s
发表在 redis | 标签为 , | 留下评论

tcp socket文件句柄泄漏

今天发现有台redis机器上出现socket个数告警,这是很奇怪的现象。因为一台redis服务器上就部署了几个redis实例,打开的端口应该是有限。 1、netstat显示的tcp连接数正常 bcdf868cc08c1ec195658ca74a252850022 建立的
发表在 os/linux | 标签为 , | 留下评论

Redis高可用架构(1)—Keepalive+VIP

最近整理一下Redis高可用架构的文档,也准备分享出来,虽然这些架构也不是很复杂。 Redis的高可用方案目前主要尝试过5种方式,其中2种方式已经在线上使用。 1)Redis Master-Slave + Keepalive + VIP。 这是很经
发表在 redis | 标签为 , , | 留下评论