热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tcpcopy,模拟在线压力测试的好帮手_MySQL

主要信息来自:http://code.google.com/p/tcpcopy/tcpcopy是一个基于底层的应用请求复制(所有基于tcp的


主要信息来自:http://code.google.com/p/tcpcopy/

tcpcopy是一个基于底层的应用请求复制(所有基于tcp的packets)开源项目,可用于替代ab做在线模拟压力测试,可转发各种在线请求到测试服务器上,进行较为详尽的近乎实际的测试,从而避免了新业务、系统上线带来的潜在问题。

tcpcopy的四大功能:

1)分布式压力测试,将多个前段请求集中到某个后端进行压力测试

2)上线前测试,检验新系统可靠性,提前发现潜在问题

3)对比测试,同样请求,针对不同或不同版本程序,可以做性能对比等试验

4)应用热备份,对于后端的短连接,请求丢失率非常低(1/10万)

tcpcopy具有以下几个特点:

1)实时转发

2)近乎真实效果

3)对在线系统影响很小

4)操作简单

5)分布式

6)意义非凡

使用tcpcopy非常简单,下载源码,编译,按照说明,几个步骤很快就能使用。

关于tcpcopy使用的一些注意事项有:

1)Linux平台,内核2.6+

2)TCPCOPY类似于UDP,所以会丢包,进而丢失请求

3)本系统不支持域名,只支持ip地址

4)Local Requests,请设置lo MTU不超过1500,并且在配置文件中不要设置127.0.0.1地址,

要设置内网或者外网地址

5)TCPCOPY server有可能会成为性能瓶颈

6)丢失请求率跟网络状况有关,最好在内网内复制请求

7)TCPCOPY中的tcpcopy和interception程序运行需要root权限

8)TCPCOPY只与ip、tcp层的数据有关,如果请求验证与tcp层以上的协议有关,则系统不能正常运行。

例如:mysql连接协议,由于权限认证与tcp层上面的mysql协议有关,所以复制过去的请求会被目

标测试服务器认为非法请求,这个时候需要针对mysql协议作具体针对性的处理,tcpcopy程序才能正常运行

9)程序更新非常快,所以最新版本在svn上面

svn checkouthttp://tcpcopy.googlecode.com/svn/trunk/tcpcopy

10)目前追求的是功能,性能优化和代码重构会在稳定以后进行

11)长response目前支持不是很好,将在下一个版本改进

12)如果有问题,请注意error.log文件提示的错误信息 (email:163.beijing@gmail.com)

13)源代码已经转到github

除了这些,下面是我在用tcpcopy测试mysql时的一些小结:

1) 测试MySQL时,测试机需要开启 skip-grant-tables,否则无法正常进行,因为MySQL需要进行认证;在线服务器无需调整

2) 测试过程中不能执行flush privileges,否则上述选项会失效

3) 每次启用tcpcopy时,都需要重启mysqld,不能在线直接应用,否则不能转发包(最新版本已经解决这个问题)

4) 用sysbench进行测试过程中,prepare时,在线服务器能创建测试表,测试机无法创建新表

5) 需适当调大内核参数:ip_queue_maxlen,否则会出现大量的queue dropped

6) 无法完全保证在线服务器和测试机的数据一致性,只能做为模拟线上压力,提前进行bug测试等用途


推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 1、Ipv4只能用于内网,外网只能用2、DNS:把域名解析成ip地址3、MAC地址就是物理地址(网卡序列号)   IP地址:电脑序列号4、不同电脑,微信之间互相通信,靠的是端口;  ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
author-avatar
Q小泓别_431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有