1 / 30

TCPCOPY

TCPCOPY. 王斌 20 11 - 09 - 22. 声明. 偶中文很差,敬请谅解 文中中英文混杂,敬请谅解 如有不对,敬请谅解. 内容. 基础知识 TCPCOPY 详细介绍 实战 注意事项 总结. 基础知识. TCP/IP protocol Linux Kernel Raw Socket Netlink. 基础知识 ---TCP/IP 协议. 基础知识 ---Linux Kernel. 基础知识 ---Raw Socket. 基础知识 --- Netlink.

evania
Download Presentation

TCPCOPY

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TCPCOPY 王斌 2011-09-22

  2. 声明 • 偶中文很差,敬请谅解 • 文中中英文混杂,敬请谅解 • 如有不对,敬请谅解

  3. 内容 基础知识 TCPCOPY详细介绍 实战 注意事项 总结

  4. 基础知识 TCP/IP protocol Linux Kernel RawSocket Netlink

  5. 基础知识---TCP/IP协议

  6. 基础知识---Linux Kernel

  7. 基础知识---Raw Socket

  8. 基础知识---Netlink • Linux Netlink, which is used in Linux both as an intra-kernel messaging system as well as between kernel and user space. • 一般而言,防火墙都是嵌入在Linux内核协议栈的处理过程中,运行在内核地址空间。这就要求开发者深入理 解和掌握内核,以及内核协议栈的代码。对于普通开发者来说,此要求显然过于苛刻。为此,Linux内核在Netfilter框架的基础上提供了IP Queue机制,使得基于用户态(User Mode)的防火墙开发成为可能。 • NetLink是Linux系统特有的、基于Socket编程接口的通信机制。

  9. NetLink

  10. Netlink Filter

  11. TCPCOPY详细介绍 定义 架构 Request Packets特点 实现策略 功能 应用领域 意义 使用方法

  12. TCPCOPY定义 请求复制工具 TCPCOPY是基于底层的请求复制工具 TCPCOPY是不可靠的,类似于UDP 类似于数据镜像

  13. TCPCOPY---Architecture

  14. TCPCOPY---client

  15. TCPCOPY---server

  16. TCPCOPY---Request Packets特点 Client packets(客户端过来的packets) Local packets(本地包) Nonlocal inter-server packets Keepalive connection Short connection

  17. TCPCOPY---实现策略 解决包复制转发的策略 简单策略(原王波版本) 自动机(新版本)

  18. TCPCOPY---功能 分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),找出系统瓶颈所在 高压下提前发现潜在bug 普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线 对于后端的短连接,请求丢失率非常低(1/10万),可以应用于热备份

  19. TCPCOPY---应用领域 什么时候要用这个? 上线没有信心 单元测试不够充分 对新系统不够有把握(例如membase取代memcached) 对系统能够承受的压力没有把握(例如新机器上线) 哪些场合? 需要找出系统性能瓶颈的场合 可以丢请求的场合,并且是tcp应用 例如:Web服务,tcp socket通信,nginx取代apache的场合,membase取代memcached的场合

  20. TCPCOPY---意义 零失误,领导高兴,你也高兴 对你的系统更加了解 了解底层是如何工作的

  21. TCPCOPY---使用方法 TCPCOPY server 1)启动内核模块ip_queue (modprobe ip_queue) 2)设置要截获的端口,并且设置对output截获 iptables -I OUTPUT -p tcp --sport port -j QUEUE 3)./interception 注意(如果已经启动ip_queue和已经设置iptables,只需要运行第3项) TCPCOPY client ./tcpcopy 本地ip地址1|本地ip地址2|… 本地port 远程ip地址 远程port

  22. 实战 广告投放系统(分单机器和多机器请求复制) adclient请求复制 adserver请求复制 userserver请求复制 开源nginx hmux协议 Memcached 复制请求到membase中去

  23. 实战---广告投放系统特点

  24. 实战--- adclient 特点 客户端请求packets比较复杂 特点 请求复制丢失率在0.5%以下 多机器测试,发现能够承受4000次每秒的请求,ab压力测试能够承受20000次每秒的请求,说明ab不真实

  25. 实战--- adserver 特点 连接是keepalive的 有些连接很长时间不会被调用 连接会服务大量请求 一般很少出现丢包 效果 单机器请求复制丢失率在0.1%以下 多机器测试,实际测试能够承受6000次每秒,并在高压测试情况下进程出现崩溃,提前发现bug 预计一台adserver能够承受1.5万次请求每秒

  26. 实战--- userserver 特点 连接只服务一个请求 模型简单 很少出现丢包 效果 单机器请求复制丢失率在0.001%以下

  27. 实战---开源nginx hmux协议 检测模块是否稳定 是否容易出现进程崩溃 是否会出现500错误

  28. 实战--- Memcached 检验Membase系统是否稳定 检验Membase是否丢数据 检验Membase是否能够应付异常情况

  29. 注意事项 Linux平台,内核2.6+ TCPCOPY类似于UDP,所以会丢包,进而丢失请求 本系统不支持域名,只支持ip地址 Local Requests,请设置lo MTU不超过1500,并且在配置文件中不要设置127.0.0.1地址,要设置内网或者外网地址 TCPCOPY server有可能会成为性能瓶颈 丢失请求率跟网络状况有关,最好在内网内复制请求 如果有问题,请注意error.log文件提示的错误信息

  30. 总结 请大家多支持TCPCOPY 开源地址 http://code.google.com/p/tcpcopy/ 致谢 感谢王波的设计和部分代码 感谢公司的支持

More Related