tomcat的优化

1、内存使用配置

Tomcat是依赖于JVM的,所以Tomcat的使用内存配置实质上是JVM的内存配置。

 

在/bin目录下的catalina.bat可以直接通过Tomcat设置JVM内存参数,windows下打开catalina.bat文件,在大概中间的位置,找到

set "JAVA_OPTS=%JAVA_OPT% -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"

通过内存设置充分利用服务器内存

  • -server:模式启动应用慢,但是极大程度提高运行性能

  • -Xms2048m -Xmx2048m:设置的是堆内存

     

java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError:PermGen space,可以不设置

           

  • Headless=true:适用于Linux系统,与图形操作有关,如生成验证码含义是当前的是无显示器的服务器,应用中如果获取系统显示有关的参数会抛出异常,windows系统可不用设置

 

可通过jmap -heap process_id查看设置是否成功

         

2、最大连接数配置(并发能力)

在/conf/server.xml里进行配置

 

在属性中将protocol属性改为 

"org.apache.coyote.http11.Http11NioProtocol",

NIO模型的效率更高

            

加入

 

maxThreads="500" 
//当前可以同时处理的最大用户访问数

minSpareThreads="100" 
//最小空闲线程连接数,用于优化线程池

maxSpareThreads="200"

acceptCount="200" 
//当所有的线程以分配,仍然允许连接进来,但是出于等待状态的用户数。
//等待线程数+工作线程数=总的可最大连接数,如果超过此数,
//新的连接将不会被接受,就会产生一个http错误

enableLookups="false"
//是否允许DNS反查,如果为true,request.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名,
//当没有这样需要的时候,可以将这个功能关闭,在一定程度上提高了Tomcat服务器的性能

负载均衡配置

       

负载均衡是提高应用负载量和容错的有效手段,可以结合Nginxs与Tomcat实现,Nginx是一款性能优异的反向代理服务器。

 

1、负载均衡配置实现

 

负载均衡策略:

 Nginx 提供轮询(round robin)、用户IP哈希(client IP)和指定权重 3 种方式

       

2、负载均衡时Session的处理策略

Session是Tomcat服务器上的内存空间,如果一个用户发出多个请求,却发到了多个tomcat服务器中,那么就会出现Session不同步的问题

              

解决方案1

将一个用户的请求锁定到某一台服务器上,简单,但是缺乏容错性,一旦某个服务器发生故障,Session可能丢失,(但是服务器发生故障是一个低概率事件,如果一个服务器经常挂掉,要么是硬件有问题,要么是应用有问题)

 

可以使用用户IP哈希实现

 

解决方案2

Session复制策略,基于网络的广播策略,一个节点Session变化,其他节点同步复制,具有容错性,但节点多或复制量大时对网络负荷大,使网络效率低下,甚至阻塞

 

① 在/conf/server.xml文件中开启Session复制的选项,将注释去掉,7.0默认值以配置好,需要接收器绑定内网(一般服务器都有两块网卡)网卡地址,修改端口>。

 

② 在应用中指定应用是在分布式部署之下,在web.xml中添加选项

 

解决方案3

额外创建一个共享的空间用来存放Session,所有服务器共享一个Session

 

memcached缓存共享方案基本原理

粘性Session与非粘性Session方式:

 

需要一些工具jar包,官网有目录和下载连接,在/conf/context.xml中进行配置,全局有效。

       

3、集群环境中应用代码应注意的问题       

传递Session需要实体类序列化支持,实现可序列化接口,设置版本号。

       

获取用户IP地址方法的变化,获取真实客户端ip而不是Nginx代理地址。

         

动静分离结构的预规划。一般高并发的网站上,资源类的文件,如js,css,图片通常是由静态服务器处理,Nginx处理静态文件效率就非常高,而tomcat处理静态文件是它很大的一个弱势,tomcat只负责动态请求的处理。

 

那么编码的时候就要考虑静态资源最后可能要被拿出去,地址会有变化,所以在开发的时候应该规划访问地址,保持最大灵活性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值