【点评运维】使用tcpcopy&tcpdump对商户应用进行模拟数据压测

使用tcpcopy&tcpdump对商户应用进行模拟数据压测

今天在启文的帮助下一起对新框架下的shop-web一台机器进行了性能和容量压测。

过程中遇到了一些问题,以及也有一些操作失误,总结了一下与大家分享一下。

环境说明:

centos 6.0 x64

tcpcopy 0.8.0


具体操作过程如下:

1.在shop-web03.nh上在root账户下使用tcpdump命令 录制线上机器eth0的80端口请求流量。

tcpdump -i eth0 tcp and port 80  -s 0 -w shopweb03.pcap

PS:tcpdump常用参数:

(1). tcpdump的选项

-a       将网络地址和广播地址转变成名字;

-d       将匹配信息包的代码以人们能够理解的汇编格式给出;

-dd      将匹配信息包的代码以c语言程序段的格式给出;

-ddd     将匹配信息包的代码以十进制的形式给出;

-e       在输出行打印出数据链路层的头部信息;

-f       将外部的Internet地址以数字的形式打印出来;

-l       使标准输出变为缓冲行形式;

-n       不把网络地址转换成名字;

-t       在输出的每一行不打印时间戳;

-v       输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-vv      输出详细的报文信息;

-c       在收到指定的包的数目后,tcpdump就会停止;

-F       从指定的文件中读取表达式,忽略其它的表达式;

-i       指定监听的网络接口;

-r       从指定的文件中读取包(这些包一般通过-w选项产生);

-w       直接将包写入文件中,并不分析和打印出来;

-T       将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

2.shop-web18.nh上:

(1) 安装tcpcopy,启用离线模式

yum install libpcap-devel

cd /data

git clone http://github.com/wangbin579/tcpcopy

cd tcpcopy

sh autogen.sh

./configure --prefix=/usr/local/tcpcopy --enable-offline

make

make install

(2)修改nginx配置文件,过滤POST请求,避免脏数据

在nginx的配置文件中加上:

 if ($request_method !~ ^(GET|HEAD)$ ) {

        return 403;

    }

或者:

if ($request_method = POST){

 return 403;

}

 if ($request_method ~ ^POST$ ) {

        return 403;

    }

三选一即可。

(3)在shop-web18.nh上开测,root账户下:

由于我们用的是2.6.32内核,低于3.5的内核,需要执行:

接收数据端内核参数,

启动内核模块ip_queue:

modprobe ip_queue

然后执行:设置要截获的端口,并且设置对output截获

iptables -t filter -I OUTPUT -p tcp --sport 80 -j QUEUE

/usr/local/tcpcopy/bin/intercept &

正常流量:/usr/local/tcpcopy/bin/tcpcopy -i shopweb03.pcap  -x 80-10.1.4.112:80

3倍流量: /usr/local/tcpcopy/bin/tcpcopy -i shopweb03.pcap  -x 80-10.1.4.112:80 -n 3

5倍流量: /usr/local/tcpcopy/bin/tcpcopy -i shopweb03.pcap  -x 80-10.1.4.112:80 -n 5

开启nginx,查看nginx访问日志:

/etc/init.d/nginx restart

cd /data/applogs/nginx && tail -f shop-web.access.log

同时观察cat上的数据,nginx上的监控数据。

tcpcopy常用参数:

发送数据端:  tcpcopy 本地ip地址1[:本地ip地址2:…]  本地port  远程ip地址 远程port

接收数据端:/usr/local/tcpcopy/bin/intercept

详情见:https://github.com/wangbin579/tcpcopy

你可能感兴趣的:(流量)