最近在公司弄一个频繁GC的问题,以下是我提的第一个建议,但公司环境不允许这样实行(生产环境管理及其严格,而且涉及调用其他服务的问题),现记录如下。

TCPcopy最开始是网易开发的用于广告投放系统的一个测试工具,能够进行分布式压力测试,普通上线测试,流量放大测试等,其测试数据比较真实。

下面以图形说明TCPcopy的原理

1.下图是一个典型的web应用服务器的示例,用户请求过来后,达到web应用,web应用处理完请求后,通过网络传输给请求发起者。

由于生产环境的限制比较严格,不能在生产环境下进行有效测试和获取足够的运行数据,在测试环境下能够获取更多的数据,但测试环境中的数据不够真实,难以复现生产环境下出现的各种问题。TCPcopy打通了生产环境和测试环境之间的通道。下图是加入了TCPcopy的生产服务器和测试服务器:

使用TCPcopy时,首先需要在生产服务器上安装TCPcopyclient,然后在测试服务器上安装TCPcopyserver。

1.      TCPcopyclient运行在线上前端机上,监听IP层的数据包,

2.      用户请求到达线上前端机,

3.      Socket包在IP层被拷贝了一份,传给TCPcopy进程,

4.      TCPcopy修改包的目的及源地址,发给测试前端机

5.      测试前端机接收数据包,处理请求,并返回结果

6.      返回结果在IP层被拦截、丢弃, TCPcopyserver拷贝返回数据包的IP header返回

7.      IP header被发送给线上前端机的TCPcopy进程。

实施步骤

首先,下载TCPcopy的源码包

假设有两台机器:

机器A:线上前端机,IP:192.168.1.100;

机器B:测试前端机,IP:192.168.1.200;

在两台机器上都有sudo权限

1.       在B依次执行:

a)        Modprobe ip_queue   加载ip_queue模块

b)        Sudo iptables –t filter –loutput –p tcp –sport 80 –j queue     配置iptables规则

c)        Sudo ./interception&     启动TCPcopy服务器

2.       在A上执行:

a)        Sudo ./tcpcopy 192.168.1.100 80192.168.1.200 80 &    启动TCPcopy客户端

如果在A上看到”I am booted”,则表示操作成功,TCPcopy已经开始工作。

TCPcopy使用示例相关推荐

  1. 利用tcpcopy引流做模拟在线测试

    本文转自 http://www.searchtb.com/2012/05/using-tcpcopy-to-simulate-traffic.html 一.工具介绍 Tcpcopy是一个分布式在线压力 ...

  2. tcpcopy mysql_利用tcpcopy引流过程

    tcpcopy是一个tcp流量复制工具,当前还支持udp和mysql流量的复制. 目的: 将机器10.24.110.21的5000端口流量引流到机器10.23.25.11的5000端口. 示例:将10 ...

  3. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  4. CPU Cache原理与示例

    CPU Cache原理与示例 基础知识 现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示: 其中:  ...

  5. 编译器 llvm clang 源码转换示例

    编译器 llvm clang 源码转换示例 从git获取llvm项目的源码方式: git clone https://github.com/llvm/llvm-project.git 下载源码后,进入 ...

  6. Cache Memory技术示例

    Cache Memory技术示例 为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 先思考第一个问题:程序是如何运 ...

  7. Swift与LLVM-Clang原理与示例

    Swift与LLVM-Clang原理与示例 LLVM 学习 从 简单汇编基础 到 Swift 不简单的 a + 1 作为iOS开发,程序崩溃犹如家常便饭,秉着没有崩溃也要制造崩溃的原则 每天都吃的很饱 ...

  8. C语言与OpenCL的编程示例比较

    C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...

  9. OpenCL框架与示例

    OpenCL框架与示例 下面的图简单说明了OpenCL的编程框架,图是用的GPU,其他类似: 名词的概念: Platform (平台):主机加上OpenCL框架管理下的若干设备构成了这个平台,通过这个 ...

最新文章

  1. 笔记本html外接显示器,笔记本
  2. JS阻止事件冒泡的3种方法,以及他们之间的不同
  3. JWT - just what?
  4. c++——reverse()函数的使用
  5. 校园兼职跑腿源码+网页版(非小程序)
  6. Spring Boot项目在GitHub上初始化及控管步骤
  7. python安装包的方法与图解_Python包的几种安装方法,方式
  8. bin/arm-linux-androideabi-nm: libtinfo.so.5: cannot open shared object file: No such file or directo
  9. 计算机视觉:基本的图像操作和处理
  10. 拉卡拉考拉超收,关于它的全部信息!
  11. 几个好看的echarts表格效果
  12. Ubuntu 20.04 源码编译Paddle2.2.2
  13. 用css3 3d效果做一个立体盒子
  14. (0001) H5开发之WebStorm 开发H5如何用手机打开测试
  15. Java 时间格式处理
  16. 程序员如何抉择银行技术岗?
  17. 【备份恢复】noarchive模式下使用增量备份恢复数据库
  18. c语言 内存映射文件,内存映射文件
  19. JAVA poi合并任意列 相同数据单元格
  20. 笔记合集 爬虫基础系列 临近结束 课件直接合一起 方便自己寻找 有空再整理

热门文章

  1. Android 高德地图key获取、坐标定位
  2. 高空作业安全绳穿戴识别检测算法 YOLOv3
  3. JavaScript设计模式——订阅者-发布者模式简单实现
  4. 如何成为一个牛逼的程序猿
  5. 【计算机网络】笔记及考点
  6. 酯化反应固体酸催化剂
  7. h5物体拖动_网易爆款H5 的交互方法参考
  8. 分享 | 全职在家工作/读书应该如何保持效率
  9. 照片怎么改到100k?图片压缩到固定大小?
  10. 流程图分级、分类、分层