在高并发访问的时候,一台tomcat完成是撑不住的,这时就需要做个tomcat集群了,使用nginx进行LB处理。那么先安装好nginx进行测试。
在win10中,下载好nginx,并进入解压好的目录,执行 start nginx即可以启动nginx了,只要在访问localhost页面上出现“Welcome to nginx!”等字样表示nginx安装成功了。这时可以使用jmeter进行压力测试,模拟3000个用户访问首页50次:
本机配置为:
本地压测的结果为:
可以看出qps可以达到1300多,但是失败率竟然高达88%多。这样完全不适合使用本地测试。虽然windows上应该也有很多方法进行调优,但是还得要去调查,太浪费时间了,而且服务器一般都部署在linux系统上,所以本地测试时可以使用docker进行测试。
docker安装与使用
本人系统是win10系统,安装的docker是使用docker tools进行安装的,安装完成docker后,会自动安装好virtualbox的。进入docker页面,执行nginx安装命令
docker run -p 80:80 --name mynginx -d hub.c.163.com/library/nginx:latest
这里使用的是网易的镜像中心,使用官方的镜像中心的话速度太慢了。这样nginx就安装好了。安装好了后可以使用命令:docker-machine ip 查看docker的ip地址,我这里本地是192.168.99.100,准备ok后进行压力测试,一样是模拟3000个用户访问首页50次,得到的压测结果为:
qps可以达到1100多,失败率在0.9%左右,只需要简单的操作就可以减少这么高的失败率,还有什么理由不用docker呢。
虽然以上的配置只是很简单的使用,肯定是有很多地方可以调整的,比如调整nginx的worker_connections等来提升吞吐量。那么就需要自定义配置文件了,这里使用的是docker的挂载功能。
使用挂载配置
在对方答复 首先打开virtualbox,进入设置页面:
然后选择需要共享的文件目录,我这里共享了G盘下的docker目录
添加完成后可以看到如下信息:
配置完成后,进入docker命令行,执行docker-machine restart default重启docker,重启完成后进入docker中,执行 docker-machine ssh default 进入docker容器中。执行mount命令查看挂载情况:
可以看出docker目录已经挂载成功了,挂载成功后对nginx配置文件进行共享了,首先执行nginx的命令修改为:
docker run -p 80:80 --name mynginx -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -d hub.c.163.com/library/nginx:latest
这样本地的docker/nginx/conf/nginx.conf配置文件就映射到了nginx默认的配置文件了。当本地文件修改了,只需要执行 docker exec -it mynginx bin/bash 进入nginx容器中,然后执行nginx -s reload 配置重载就可以了。
这样是不是非常方便了,下一步就是需要将本地的tomcat部署到docker中,进行更好的本地压力测试了。