tomcat 安全规划及性能优化

tomcat 在生产环境下安全规范

1、telnet端口的修改<Server port="8005" shutdown="SHUTDOWN"> 将8005端口修改或shutdown指令字符创做修改比如shutdown="dangji"

2、ajp连接端口的保护:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改默认端口8009为不易冲突的大于1024端口

3、禁用管理端
删除默认安装目录下的conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件
删除默认安装目录下的/webapps下默认所有的目录和文件
将tomcat应用根目录配置为tomcat安装目录以外的目录。例如:在Host标签下添加
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/usr/local/tomcat/webroot" debug="
0" reloadable="false" crossContext="true">
</Context>

4、文件列表的访问控制
conf/web.xml文件中的default部分listings的配置必须为false,默认是false。表示禁止将文件展示出来

5、版本信息隐藏
修改web.xml重定向403、404以及500等错误指定的错误页面,因为这些错误页面上会显示版本信息,所以要修改错误页面的重定向

6、server header重写
在HTTP Connector配置中加入server的配置

7、访问限制
通过配置,限定访问的ip来源

8、起停脚本的权限收回
去除其他用户对tomcat的bin目录下shutdown.sh、startup.sh、catalina.sh的可执行权限
chmod -R 744 tomcat/bin/*

9、访问日志格式的规范
开启tomcat默认访问日志中的Referer和User-Agent记录

tomcat性能优化:

tomcat线程优化:

<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000" redirectPort="8443" />

maxThreads="600"       ///最大线程数
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

jvm内存调优:

vim  /usr/local/tomcat/bin/catalina.sh 

JSSE_OPTS="-Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=64M -XX:MaxPermSize=128M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log "

配置说明:

  • Tomcat 默认是以 java -client 的方式运行,server 意味着是已真正的生产环境来运行,这样可以获得更高的并发、更高效的垃圾回收能力;
  • Xms、Xmx表示JVM 最小内存初始值和最大内存初始值,建议设置为相同参数,以减少CPU对内存资源的调度,避免CPU高速运转进行的垃圾回收;
  • Xmn设置年轻代大小为512m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8;
  • -Xss是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。一般不易设置超过1M,要不然容易出现out ofmemory;
  • -XX:+AggressiveOpts作用如其名(aggressive),启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术;
  • -XX:+UseBiasedLocking启用一个优化了的线程锁,我们知道在我们的appserver,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还会出现线程阻塞,这个优化了的线程锁使得你的appserver内对线程处理自动进行最优调配;
  • -XX:PermSize=128M -XX:MaxPermSize=256M JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。那么,如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;四分之一是1024MB,这就是MaxPermSize默认大小;
  • -XX:+DisableExplicitGC在程序代码中不允许有显示的调用”System.gc()”。调用System.gc()付出的代价就是系统响应时间严重降低,就和我在关于Xms,Xmx里的解释的原理一样;
  • -XX:+UseParNewGC 对年轻代采用多线程并行回收。
  • -XX:+UseConcMarkSweepGC 即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒;
  • -XX:+CMSParallelRemarkEnabled在使用UseParNewGC 的情况下, 尽量减少mark的时间;
  • -XX:+UseCMSCompactAtFullCollection在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少;
  • -XX:LargePageSizeInBytes指定 Java heap的分页页面大小;
  • -XX:CMSInitiatingOccupancyFraction=70CMSInitiatingOccupancyFraction,这个参数设置有很大技巧,基本上满足(Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn就 不会出现promotion failed。在我的应用中Xmx是6000,Xmn是512,那么Xmx-Xmn是5488兆,也就是年老代有5488 兆,CMSInitiatingOccupancyFraction=90说明年老代到90%满的时候开始执行对年老代的并发垃圾回收(CMS),这时还 剩10%的空间是5488*10%=548兆,所以即使Xmn(也就是年轻代共512兆)里所有对象都搬到年老代里,548兆的空间也足够了,所以只要满 足上面的公式,就不会出现垃圾回收时的promotion failed,因此这个参数的设置必须与Xmn关联在一起;

参考文章:http://www.open-open.com/lib/view/open1324736648468.html

     http://blog.chinaunix.net/uid-743704-id-2681326.html

原文地址:https://www.cnblogs.com/goser/p/8505514.html

时间: 2024-07-29 04:49:43

tomcat 安全规划及性能优化的相关文章

Tomcat安全配置与性能优化

Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很多互联网应用和企业应用都部署在 Tomcat 服务器上,比如我们公司,哈. 之前我们 tomcat 都采用的是默认的配置,因此在安全方面还是有所隐患的.上周对测试环境的所有服务器的tomcat都做了安全优化,其间也粗略做了一些性能优化,这里就简单记录分享下! 一.版本安全 升级当前的tomcat版本

Tomcat 7.0.x性能优化

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. 是目前的开发焦点.它在汲取了Tomcat 6.0.x优点的基础上,实现了对于Servlet 3.0.JSP 2.2和EL 2.2等特性的支持.除此以外的改进列表如下: · Web应用内存溢出侦测和预防 · 增强了管理程序和服务器管理程序的安全性 · 一般 CSRF保护 · 支持web应用中的外部内容的直接引用 · 重构 (c

Tomcat介绍及性能优化

一.Tomcat简单介绍: Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. 版本介绍:现在版本更新到 Apache Tomcat 8.x,但是Apache Tomcat 7.x是目前开发的焦点.Apache Tomcat 7.x它在汲取了Tomcat 6.0.x优点的基础上,实现了对于Servlet 3.0.JSP 2.2和EL 2.2等特性的支持. 除此以外的改进列表如下:

java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

tomcat性能优化Server——Connector

该元素可用于Tomcat 6.0.11以及更高版本. 允许您为一个Service的所有Connector配置一个共享线程池.在运行多个Connector的状况下,这样处理非常有用,而且每个Connector必须设置一个maxThread值,但不希望Tomcat实例并发使用的线程最大数永远与所有连接器maxThread数量的总和一样高. 这是因为如果这样处理,则需要占用太多的硬件资源.相反,您可以使用Executor元素配置一个共享线程池,而且所有的Connector都能共享这个线程池. 警告:为

Tomcat性能优化及JVM内存工作原理

Java性能优化原则:代码运算性能.内存回收.应用配置(影响Java程序主要原因是垃圾回收,下面会重点介绍这方面) 代码层优化:避免过多循环嵌套.调用和复杂逻辑.   Tomcat调优主要内容如下: 1.增加最大连接数 2.调整工作模式 3.启用gzip压缩 4.调整JVM内存大小 5.作为Web服务器时,与Apache整合或Nginx 6.合理选择垃圾回收算法 7.尽量使用较新JDK版本   生产配置实例: 1 2 3 4 5 6 7 8 9 10 11 12 13 <Connectorpor

JAVA开发之大型互联网企业高并发架构Tomcat服务器性能优化视频教程

课程目标熟练掌握高并发架构Tomcat服务器性能优化. 适用人群对计算机,java开发人员,Java架构师,运维感兴趣的朋友! 课程简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而成.Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomc

Tomcat多实例集群架构 安全优化和性能优化

Tomcat多实例 复制tomcat目录 #将tar解压出来的tomcat复制出两个实例来cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat1 cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat2 修改多实例配置文件 #创建多实例的网页根目录 mkdir -p /data/www/www/ROOT #修改多实例配置文件的以下三行 vim /usr/local/tomcat/co

JVM虚拟机详解+Tomcat性能优化

1.JVM(java virtual mechinal) (1)JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. (2)JVM的主要工作时解释自己的指令集(即字节码),并映射到本地的cpu的指令集或OS系统调用. 2.JVM虚拟机主要有堆.栈.本地方法栈.方法区组成 注:(1)堆和栈都是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除. (2)在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护端点和现场. (3)堆.队列,先进先