什么时候在tomcat前置nginx性能有明显提升

什么时候在tomcat前置nginx性能有明显提升,第1张

      性能优化对于服务器来讲肯定是做得越合理越好了,下文我来为各位整理一篇关于nginx或tomcat的性能优化调整例子,有兴趣的朋友不防和小编一来看看吧。

最近花了一点时间进行了NGINX加TOMCAT7集群压力测试,下面通过对一些常见问题的回答来说明如何调优服务器的性能,是自己的一些经验,且无实际数据,如有纰漏请见谅。

背景: TOMCAT7已加APR或者NIO。已装简单监控JCONSOLE,监控服务器内存,线程等基本情况。

问题1  一个Tomcat他的maxThreads到底配置多少合适?

一个好的maxThreads的配置就是达到资源的合理化应用。

资源池:

在讲其它东西之前,我们先引入一个概念,就是资源池。tomcat7中,他对http请求的处理,也有一个池的概念,配置可以参考这里。每一个请求进来后都是使用线程池中的一个来处理,线程池的大小是由maxThreads来限定的。

异步IO:

当前Tomcat通过使用JAVA NIO或者Apache Portable Runtime这样的异步IO来支持性能的优化。异步IO就是当应用需要进行耗时的IO *** 作时,向内核发出请求,不用真正等IO *** 作完成,就去处理其它的请求了,当IO真正完成时会有回调或通知机制通知并完成余下工作。而一般的同步IO是当应用需要IO *** 作时,向 *** 作系统发出IO Read/Write请求。同时阻塞当前应用,并等待IO返回,返回后才进行后续的 *** 作。从这里可以看出异步IO实际是将请求的处理和IO处理并行了,这样自然能较大的提高系统的吞吐量。

maxThreads的大小:

第一点:从上面的异步IO的机制来看,实际上我们可能可以用一个很小的线程池处理较大的连接数。如当前有100个请求要被处理,处理过程中50个进程都处于IO等待的状态,所以我们实际可能只需要50就能够处理那些不处于IO等待状态的请求就能满足需要了。注意在Tomcat中是使用maxConnection这个配置参数来配置Tomcat的同时处理连接数的。

第二点:盲目的加大线程数会带来一些下面的影响。由于Tomcat处理的线程均会在 *** 作系统中产生对应的实际线程,这就意味着对应的资源消耗(内存,SOCKET等)。另一个影响就是同时处理的请求加大可能导致JAVA内存回收的问题,不同的并发对内存的占用是不同,而实际上90%的内存都是临时变量,可以很快回收。较大的并发同时占用较多的临时变量就会导致容易撑满年青代,从而导致部分内存进入老年代,从而引起更多的Stop The World,甚至OOM,影响JVM性能。其它的影响还包括更高的CPU占用和更多的硬盘读写。这些实际都跟硬件有关。

第三点: 我们可以通过配置一个较合理的资源池,由于资源充裕,单个请求处理迅速,这样能达到最优的系统效率。但是有的时候我们并不总是追求这样的一种情况。比如下载时,单个请求的响应时间将受限于网络

Nginx是一个HTTP服务器 ,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

客户端本来可以 直接 通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端。

负载均衡: 相同的应用 部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是, 其中一台服务器万一挂了,只要还有其他服务器正常运行 ,就不会影响用户使用。

虚拟主机: 如将 www.aaa.com 和 www.bbb.com 两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

动态静态资源分离:

之前开发web方面的程序时候我们习惯将 html、css等资源文件也放置于Tomcat中 ,用户访问后tomcat需要将请求的这些静态资源文件一并返回给用户。

再者如果有多台同业务逻辑的tomcat服务器的话,同样的资源还需要在每个服务器上放一份,同时也增加了tomcat服务器的网络IO。

如果我们只讲JSP之类的请求交给tomcat, 在代理服务器上存放静态资源 ,当用户的请求非动态资源的时候, 我们完全可以将代理服务器的静态资源直接返回给用户,而不去增大Tomcat的压力

tomcat只需要 负责逻辑处理 动态资源的加载 就可以了。

Tomcat的高并发性能很弱 ,所以在处理 静态请求的时候,我们就抛给Nginx处理 ,而Tomcat专门处理动态请求。

Nginx和Tomcat结合方式

WEB-INF

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问, 只有服务端可以访问的目录


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12035742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存