2015年(6)
发布时间:2015-06-15 21:11:22
之前写了一个多线程的应用,使用的boost asio异步,发现使用的过程中linux glibc自带的malloc性能很差,替换为tcmlloc,性能得到比较大的提升。但是最近突然发现有时候内存增长到几个G,开始以为是内存泄露的问题,用valgrind做了大量的测试,发现内存虽然有时候会飙升到几个G,但是valgrind显示没有内存泄露。最后怀.........【阅读全文】
发布时间:2015-05-04 15:27:49
下面还是摘取了handle_slave_sql的主要代码来分析,看起来比较简单就是包括两部:1) sql线程slave_start_workers启动了一堆的线程池worker,来处理每次读取的事件2) 后面sql线程exec_relay_log_event读取log分发到不同的workerpthread_handler_t handle_slave_sql(void *arg){ .........【阅读全文】
发布时间:2015-04-30 17:17:40
handle_slave_sql比较复杂,设计到主从复制的核心问题,要读懂这块代码,需要一些储备知识:mysql 主从之间是通过dump协议来交互数据的,dump协议的数据传输包括很多种类型的event下面列出重要的几个事件,其他事件可以查看官方协议文档:ROTATE_EVENT :binlog 切换事件,通知slave.........【阅读全文】