由于单纯用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. ElasticSearch 索引整体迁移方案

    以下都是经过实战验证过的!!! [前提]使用相同的版本 ElasticSearch-5.5.1,只不过是在不同的服务器之间且重跑数据相对来说代价比较高,这种情况下就可以使用一下这种方式对索引整体迁移 ...

  2. 20190311 Windows安装ZooKeeper

    1. 说明 记录过程中踩过的坑 1.1. 环境 本机环境:Win10 ZooKeeper版本:3.4.6 2. 安装 2.1. 下载 官网下载网址 2.2. 修改配置文件 复制conf目录下的zoo_ ...

  3. python---redis的python使用

    set以及相关: r.set("foo","bar") print(r.get("foo"))#b'bar' #在Redis中设置值,默认, ...

  4. java查看本机hostName可代表的ip列表【转】

    java查看本机hostName可代表的ip列表 import java.net.InetAddress; public class ent { public static void main(Str ...

  5. C#复习正则表达式

    由于前段时间为了写工具学的太J8粗糙 加上最近一段时间太浮躁 所以静下心来复习 一遍以前学的很弱的一些地方 1 委托 public delegate double weituo(double a, d ...

  6. 运用Zabbix实现内网服务器状态及局域网状况监控(1) —— Zabbix介绍

    一.Zabbix简介 Zabbix 是一个企业级的.开源的.分布式的监控套件 Zabbix 可以监控网络和服务的监控状况. Zabbix 利用灵活的告警机制,允许用户对事件发送基于 Email 的告警 ...

  7. Frame size of 257 MB larger than max allowed 100 MB

    ActiveMQ有时会报类似Frame size of 257 MB larger than max allowed 100 MB的错误,意思是单条消息超过了预设的最大值,在配置文件中 <tra ...

  8. HTML语义化

    什么是HTML语义化呢? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化),便于开发者阅读,写出优雅的代码的同时让浏览器的爬虫更好的解析 语义化标签的优势: 1)代码结构清晰,方便阅读 2 ...

  9. u-boot移植(四)---修改前工作:代码流程分析3---代码重定位

    一.重定位 1.以前版本的重定位 2.新版本 我们的程序不只涉及一个变量和函数,我们若想访问程序里面的地址,则必须使用SDRAM处的新地址,即我们的程序里面的变量和函数必须修改地址.我们要修改地址,则 ...

  10. MIPS指令学习二

    1.MIPS寻址方式 MIPS架构的寻址模式有寄存器寻址.立即数寻址.寄存器相对寻址和PC相对寻址4种,其中寄存器相对寻址.PC相对寻址介绍如下: 1.1.寄存器相对寻址 这种寻址模式主要被加载/存储 ...