由于单纯用tomcat只能通过ip+端口号的形式访问,这样只能访问一个tomcat,而真实项目中又不可能只用一两个tomcat,所以就需要Nginx来进行分配访问请求, Nginx本身性能非常好,据官网介绍,每秒支持50Wtps

Nginx只是负责转发请求,不处理逻辑,

Nginx还有一个做一作用,就是负载均衡

Nginx下有个html文件夹,可以存放项目html静态文件

 

Nginx:反向代理服务器

web服务器:转发请求,nginx,apache,类似于服务员(传菜的)

应用服务器:tomcat,处理动态的语言,处理逻辑,类似于厨师(做菜的)

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx

Nginx安装

安装Nginx前需要先安装pcre、zlib、OpenSSL等模块,手动安装比较繁琐
本次nginx安装直接使用自动化脚本install.sh安装
1、首先确保安装包放到/usr/local/src目录下

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_02

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_03

2、进入到解压后的目录下 cd /usr/local/src/auto_setup_nginx_new

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_04

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_05

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_06

3、赋权限 chmod +x ./*

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_07

4、执行安装脚本 ./install.sh,安装过程大概一分钟

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_08

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_09

5、安装成功后,nginx会自动安装到/export/servers目录

 

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_10

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_11

 

Nginx配置文件修改

进入conf文件夹

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_12

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_13

nginx.conf需要修改内容:
1,user:是否是root

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_14

2,worker_processes:几个内核,查看cpu核数:cat /proc/cpuinfo,另外一种是top命令,然后按1

查看CPU核数

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_15

由于只有一个核,所以worker_processes设置为1

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_16

3,worker_cpu_affinity:对应上一个配置,用二进制形式写出来(0-x)proxy_passproxy_pass

第一个数字代表一个核,每增加一个核,数字*10

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_17

如:以下为8核,若16核则应该为0000000000000001开始

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_18

4,日志的path:自定义

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_19

worker_rlimit_nofile:每个worker可以支持多少个链接,核数*65535

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_20

error_page:错误页面,一旦出现以下错误,直接跳转到自己设置的页面

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_21

5,include domains/* 关注这个配置,存放tomcat相关的配置,默认不用改

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_22

每个人tomcat的配置文件都放这里,Nginx自动全部导进配置

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_23

6,拷贝/usr/local/src/下的xxx.demo.com到/export/servers/nginx/conf/domains目录下

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_24

为teach项目准备的,所以起个明显的名字,如www.teach.com

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_25

7,vi www.teach.com

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_26

8,注意upstream后的名字和proxy_pass保持一致,upstream里面所配的就是负载均衡的配置

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_27

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_28

9,server 192.168.1.209:8080 weight=10 max_fails=2 fail_timeout=30s;有几个tamcat,配置几个,weight:权重,每个tomcat分配的负载比例

由于前面我给teach项目配了两个tomcat,一个8080,一个8090

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_29

10,server name,修改成跟xxx.demo.一致即可,此域名非向运营商注册的域名

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_30

项目日志、错误日志

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_31

11,在nginx的sbin目录下,执行./nginx即可启动nginx,./nginx -s reload 重启nginx

cd /export/servers/nginx/sbin

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_32

执行命令./nginx,没有日志,如果有日志一般就是错误日志,就要去检查配置有没有配错

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_33

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_34

12,默认情况下,nginx的日志在logs目录下,access.log和error.log

13,启动nginx,在浏览器中通过ip直接访问PerfTeach的接口,或者配上host,通过域名访问(先通过ip+端口号的形式访问,以确认单独的tomcat是没问题的,确认没问题了再通过域名访问)
先去系统host文件中映射服务器ip和域名

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_35

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_36

在浏览器中输入www.teach.com/PerfTeach/login.jsp访问

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_37

 同理可设置OA项目

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_38

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_39

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_40

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_41

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_42

重启Nginx:./nginx -s reload

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_43

访问:http://www.oa.com/TestOA/userAction_loginUI.action

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_44

 

由于此时Nginx默认的策略为轮询,所以会出现这个情况,提交表单(分配给tomcat3,此时sessionId在tomcat3上),登录成功会重定向到首页(此时分配给tomcat4,而tomcat4没有这个用户的sessionId,所以没有记录登录状态,会重定向到登录页,所以会出现提交了表单还是在登录页的情况,进行登录操作时,可以同时打开tomcat3和tomcat4的日志查看,一边是登录(post),一边是访问首页(get)) 

 

Nginx负载均衡配置
Nginx负载均衡策略
1、轮询:默认策略,轮流分配请求
2、ip_hash:根据ip进行hash算法,固定的ip分配到固定的后端server,(同一个ip,永远只访问同一个tomcat)

cd /export/servers/nginx/conf/domains/

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_45

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_46

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_47

重启Nginx

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_48

登录成功

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_49

 

3、fair:根据后端server的响应时间来分配请求,响应时间短的优先分配(基本不用此策略)

响应时间短,说明性能好,性能好,则资源使用率就大,cpu压力就比较大,这个时候还把更多的请求分配给它,就会造成压力倍增,时间一长,造成的后果更就是忙的忙死,闲的闲死

例如:使用此方法时,Nginx检测到tomcat1响应时间短的话,就给tomcat1多分配一点请求

 

4、url_hash:根据url进行hash算法,固定的url分配到固定的后端server(原理和ip_hash一样)

 

Nginx访问日志配置
Nginx的logs目录access.log会显示每一次访问的日志

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_50

访问日志:

nginx的心跳检测如何配置 对nginx进行性能测试_tomcat_51

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_52

 

 

修改nginx.conf配置文件中
log format main配置项中添加 $request_time可以在access.log中显示请求时间,单位秒

 

nginx的心跳检测如何配置 对nginx进行性能测试_Nginx_53

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_54

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_55

重启Nginx:./nginx -s reload

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_56

回到log目录下:tail -f access.log

nginx的心跳检测如何配置 对nginx进行性能测试_nginx_57

刷新一下网页,多了一个响应时间

nginx的心跳检测如何配置 对nginx进行性能测试_nginx的心跳检测如何配置_58

 

此日志记录的时间,为从请求到Nginx开始,到离开Nginx回到客户端所耗费的时间

前面讲的tomcat的日志时间,为从请求到tomcat,到离开tomcat回到客户端的时间