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

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

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

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

Nginx:反向代理服务器

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

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

Nginx安装

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

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

3、赋权限 chmod +x ./*

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

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

Nginx配置文件修改

进入conf文件夹

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

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

查看CPU核数

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

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

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

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

4,日志的path:自定义

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

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

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

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

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

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

7,vi www.teach.com

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

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

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

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

项目日志、错误日志

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

cd /export/servers/nginx/sbin

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

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

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

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

同理可设置OA项目

重启Nginx:./nginx -s reload

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

由于此时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

登录成功

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

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

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

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

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

访问日志:

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

重启Nginx:./nginx -s reload

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

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

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

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

性能测试二十二:环境部署之Nginx的更多相关文章

  1. 性能测试二十:环境部署之Tomcat多实例部署+日志监控

    一个tomcat性能有限,所以需要部署等多个tomcat 单实例部署与windows下类似,项目包放到webapp目录下,启动bin目录下的startup.sh即可启动命令:./startup.sh启 ...

  2. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  3. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  5. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  6. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  7. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  8. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  9. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  10. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

随机推荐

  1. 网络编程基础【day10】:IO多路复用

    这些名词比较绕口,理解涵义就好.一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就 ...

  2. 面向对象【day08】:类的特殊成员(一)

    本节内容 1.__doc__2.__module__和__class__3.__init__4.__del__5 .__call__6 .__dict__7 .__str__8 .__getitem_ ...

  3. Python基础【day03】:文件操作(七)

    零.本节内容 1.文件常用操作汇总 2.打开文件 3.操作文件 4.关闭文件 一.文件常用操作汇总 二.打开文件 1.普通打开模式 r,英文:read,只读模式(默认) w,英文:write,只写模式 ...

  4. SqlServer中的临时表

    一.什么是临时表 临时表属于会话级的,会话结束的时候,临时表被释放,其创建.使用.删除都和普通表一样,临时表空间一般利用虚拟内存,不必进行磁盘I/O,因此效率较高..临时表有两种:普通临时表 (#Tb ...

  5. 动态规划之Fib数列类问题应用

    一,问题描述 有个小孩上楼梯,共有N阶楼梯,小孩一次可以上1阶,2阶或者3阶.走到N阶楼梯,一共有多少种走法? 二,问题分析 DP之自顶向下分析方式: 爬到第N阶楼梯,一共只有三种情况(全划分,加法原 ...

  6. Java EE 之 Hibernate异常总结【4】org.hibernate.exception.SQLGrammarException: could not execute statement

    本质原因:配置的Java Bean,由Hibernate自动产生的SQL语句中有语法错误 原因如下: 情况1.存在字段名/表名与数据库关键字冲突 情况2.MySQL5.0以后与MySQL5.0以前事务 ...

  7. JavaScript之表格操作(二)创建表格病填充表格数据

    //创建表格 var tableOptions = { way: "insertBefore", //insertBefore,append positionId: "d ...

  8. luogu P2113 看球泡妹子

    2333 这么水的蓝题 f[i][j] 表示看了i场比赛,小♀红的什么东西为j时小♂明的什么值 强行压维蛤蛤 剩下的转移很简单(注意i的循环顺序从后往前,01背包) (具体见代码) #include& ...

  9. POJ1113 Wall【凸包】

    题意: 求把城堡围起来需要的最小墙壁周长. 思路: 围墙周长为=n条平行于凸包的线段+n条圆弧的长度=凸包周长+围墙离城堡距离L为半径的圆周长. 代码: ...还是看大佬写的,自己做个记录方便日后复习 ...

  10. python学习之argparse模块

    python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...