看看Tomcat安装、配置、优化及负载均衡
reloadable:如果为true,Tomcat服务器在运行状态下回监视在WEB-INF/classes和WEB-INF/lib目录下的class文件的改动,以及监视Web应用的WEB-INF/web.xml文件的改动,如果检测到有更新,服务器会自动更新加载web应用。 其默认值为false。在开发和调试阶段,将其改为true,一般像Eclipse等开发环境都会默认改为true。在正式发布阶段,应将其该为false,可以降低Tomcat的运行负荷,提高Tomcat的运行性能 在一般情况下,元素都会使用默认的标准Context组件,即className属性采用默认值org.apache.catalina.core.StandardContext,它除了拥有上面介绍到的属性外,还有自身专有的属性: cachingAllowed:是否允许启用静态资源(HTML、图片、声音等)的缓存。默认值为true。 cacheMaxSize:设置静态资源缓存的最大值,单位为K。 workDir:指定Web应用的工作目录。 uppackWAR:如果为true,会把war文件展开为开放目录后再运行。为false,直接运行war文件。默认值为true。 10、web.xml文件 该文件必须放在/WEB-INF目录下,但是从7.0版本开始,Tomcat可以不使用web.xml文件,而是使用注解方式。 三、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 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |