linux 请求并发工具,Linux下安装Webbench工具进行压力测试

Webench是一款轻量级的网站测压工具,最多可以对网站模拟3w左右的并发请求,可以控制时间、是否使用缓存、是否等待服务器回复等等,且对中小型网站有明显的效果,基本上可以测出中小型网站的承受能力。

WebBench官网:http://home.tiscali.cz/~cz210552/webbench.html

测试环境说明:需要有两台服务器(A和B),在A服务器上上安装WebBench工具,对B服务器的网站进行测试。

WebBench安装

WebBench使用

webbench -c 并发数 -t 运行测试时间(秒) URL

通过测试,在A服务器执行webbench命令后,B服务器的CPU飙升至90%,同时B服务器操作卡顿,B服务器上的网站也打不开了。通过观察nignx日志,发现大量的并发请求:

b74d456288a76a26c271f8c071d37cd2.png

如何防止短时间的大量并发导致服务器宕机。

解决办法:

控制并发数,控制请求频率,必要时fail2ban

控制并发数及请求频率

修改nginx配置,做如下设置:

重启nginx,重新进行测试,测试结果发现A服务器的请求响应都变成了503:

fe97395b230616ff0db858d6b6dc76c3.png

说明在nginx层面,已经拒绝了大量的并发请求。但尽管如此,服务器的CPU依然占用很高,网站依然打开缓慢。

安装fail2ban

检查Firewalld是否启用

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。

配置规则

新建jail.local来覆盖fail2ban的一些默认规则:

ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔

bantime:屏蔽时间,单位为秒(s)

findtime:时间范围

maxretry:最大次数

banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口

监控nginx访问日志

这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。

继续修改vi /etc/fail2ban/jail.local追加如下内容:

上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

常用命令

如果启动fail2ban报错

如果是在centos6.5上,启动fail2ban时有可能会报错,例如:

9e3ca73376cd9f16b5a0be70fc8b175e.png

有可能你升级过python的版本导致的,需要修改/usr/bin/fail2ban-client和/usr/bin/fail2ban-server这两个文件的第一行

15458c8c11da3aecbadae9295fe6f0b1.png

不起作用原因

正常情况,按照默认设置,如果我们一分钟内访问20次网页,就会被拉入黑名单,不允许访问了,如果经测试发现不起作用,可以通过如下办法来测试

测试匹配规则

通过如下命令可以测试日志的匹配规则是否被命中

检查fail2ban-python

1d02dee3b9203ce3b2ade0d96e1dfdf6.png

通过以上截图可以看到fail2ban-python是软链接到/usr/bin/python程序的,如果你是centos6.5且自己升级过python,那么需要重新设置下软链接

重新设置软链接

使用CDN后获取真实IP地址

使用CDN后,通过日志可以看到IP都不是真实的,二是CDN的IP地址,如果继续屏蔽IP,只会把CDN的IP给屏蔽掉,而我们希望获取的是真实的IP地址。

修改nginx配置文件,在http模块中添加如下代码:

然后在每个站点的配置文件中,在access_log后面加上main参数。例如宝塔的nginx站点配置文件是在:

那么需要打开站点配置文件,在里面的access_log后面加上main参数。例如:

同时,还需要修改之前的控制并发数及请求频率参数:

重启nginx,然后再次观察日志文件,可以看到记录的IP是真实的IP了。

参考文章:

Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法:https://zhang.ge/4879.html

CentOS 7安装fail2ban + Firewalld防止爆破与CC攻击:https://www.xiaoz.me/archives/9831

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值