하여 JMeter 내압
1.Jmeter-5.1.1 다운로드 : http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip
2.Jmeter-5.1.1에 의존하는 자바 환경, java8 공식 웹 사이트가 너무 느린 (30K / s)의 다운로드 전용 버전을 java8 이상을 지원, 그래서 텐센트 소프트웨어 센터 (5M /들) 다운로드
3.java8 압축 해제 한 후 설치, 환경 변수를 구성 할 수있는 .exe 파일을 실행합니다 CLASS_PATH 후, JAVA_HOME, PATH를 한 다음 cmd를 javac의 명령을 실행을, 오류 설치가 완료됩니다
JMeter가가, / bin 디렉토리에서 찾을에서는 jmeter.bat, 실행을 클릭 4. 압축 해제는 블랙 박스는 클라이언트를 시작하는 팝업
5.Jmeter 기본 영어,하지만 중국어 지원, 옵션 - 설정> Language-를 선택> 중국
6. 준비, 수 (동시) 스레드 설정 테스트 계획 그룹에 새 스레드, 시작 시간을 (이 스레드의 최대 수에 도달하는 데 걸리는 시간), 사이클 수 (여러 요청을 오랜 시간을 보낼 수있는 각 스레드, 항상을 선택 그것은 발행 된)
아래 그림과 같이 7 내용을 작성하여 스레드 그룹에 HTTP 요청 추가
청취자를 선택 8. 아래 그림과 같이, 그래픽 보고서, 보고서를 볼 수있는 선택 차트의 완료 후, 실행을 클릭 종과 경적 모든 종류의 내압 검사 결과 창을보고하는 것과 동일 스트레스 테스트를 수행하는 서버에 일을 시작
톰캣 + Nginx의로드 밸런싱 :
1. 저가 톰캣 지지체의 정상적인 양 테스트를 수행 한 후 200 개 이상의 동시는 물론, 이러한 기본 메모리, 동시 기본 량으로서 톰캣의 기본 구성을 변경함으로써 변경 될 수있다. (300)의 테스트 데이터는 실패 요청의 20 %를, 그래서 바람둥이 클러스터링 효과를 처리하는 방법을 살펴해야 할 때
2.我搭建环境用的版本是:java8,Tomcat8.5.41解压版(下载:https://tomcat.apache.org/download-70.cgi),nginx-1.16.0(下载:http://nginx.org/en/download.html)
3.首先保证java服务正常启动,解压tomcat,多复制几个,具体几个看需要;然后挨个该配置文件,第一步:打开/conf/server.xml配置文件修改其中的8005、8009、8080端口,这一步是保证多tomcat之前彼此不重复,第二步:打开/bin/shutdown.bat(停止tomcat)和/bin/startup.bat(运行tomcat),在第一行‘@echo off’下面新启一行,写入‘SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191’,这一步是让tomcat能够找到Java环境,然后保存,第三步打开/bin/startup.bat以运行tomcat,打开浏览器测试tomcat是否运行成功。之后的tomcat都重复此操作。
4.tomcat全部打开后,开始编辑nginx配置文件,打开/conf/nginx.conf,把配置文件改为如下内容,后保存。ip_hash表示Nginx会根据ip来给请求的用户分配tomcat,同一个用户将会被分配给同一个tomcat处理,解决了session保存问题,但是这样会导致请求分配不均匀。
5.此时运行ngin.exe,就OK了。访问Nginx监听的端口,会发现请求安装配置文件正常的分配给各个tomcat,负载均衡就完成了
6.当然nginx的功能远不止如此,此处只是单纯实现负载均衡,比如根据url用正则判断实现动静分离、其他的各项设置可以满足各种实际需求,nginx虽然小但功能还是挺强大的,贴一段配置文件详解:
运行用户
user nobody;
启动进程,通常设置成和cpu的数量相等
worker_processes 1;
全局错误日志及PID文件
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
工作模式及连接数上限
events {
worker_connections 1024;#单个后台worker process进程的最大并发链接数
}
设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#设定日志格式
#access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#服务器设置的最大上传文件大小
client_max_body_size 200m;
#开启gzip压缩
gzip on;
gzip_comp_level 2;
gzip_types text/css application/javascript application/json;
gzip_disable “MSIE [1-6].”;
#设定负载均衡的服务器列表
upstream collectionBackend {
#本机上的Squid开启7002端口
server 127.0.0.1:7002;
}
server {
#侦听80端口
listen 80;
#定义使用localhost访问
server_name localhost;
#默认值90s, nginx连接到后端服务器的连接超时时间
proxy_connect_timeout 90;
#设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
proxy_send_timeout 90;
设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。
proxy_read_timeout 90;
nginx设置目录浏览及中文乱码问题解决方案:
#charset koi8-r;
#设定日志格式
#access_log logs/host.access.log main;
在这个location配置段中,如果URL请求“/public/logo.gif”,那么nginx将会在服务器上查找“F:/workspace/cloud/bv-frontend-dev/public/logo.gif”文件,即请求的URL中location后面的部分会被追加到alias指定的目录后面,而location后面的“/public”路径将会被自动丢弃。
location /public/ {
alias F:/workspace/cloud/bv-frontend-dev/public/;
}
location / {
#rewrite的主要功能是实现RUL地址的重定向
rewrite ‘^/simple/.*.(html)$’ /simple-index/simple.html last;
rewrite ‘^/simple/.*config.js$’ /simple-index/config.js last;
rewrite ‘^/simple/./custom/(.)’ /simple-index/custom/$1 last;
rewrite ‘^/simple/./api/(.)’ /api/$1 last;
rewrite ‘^/simple/custom/(.*)’ /simple-index/custom/$1 last;
rewrite ‘^/simple/api/(.*)’ /api/$1 last;
alias同上含义:
alias F:/workspace/bestvike/collection-handle/static/;
index index.html;
}
location /simple-index {
alias F:/workspace/bestvike/collection-handle/static/;
}
location /resources/ {
rewrite ‘^/resources/simple/(.*.html)$’ /simple-index/simple/$1 last;
alias F:/workspace/bestvike/collection-handle/static/simple/;
}
location /api/ {
proxy_set_header:允许重新定义或者添加发往后端服务器的请求头.该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义:proxy_set_header Host $proxy_host 和 proxy_set_header Connection close
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass URL,URL为要设置的被代理服务器的地址,包含传输协议、主机名称或IP地址加端口号、URI等要素。
proxy_pass http://collectionBackend/api/;
}
error_page:当发生错误的时候能够显示一个预定义的地址,实际上产生了一个内部跳转(internal redirect),当访问出现500、502、503、504的时候就能返回50x.html中的内容。同时我们也可以自己定义这种情况下的返回状态码。
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
7.nginx常用的正则表达试
最后,今天因为一些原因没用给负载均衡测压,之后再补测