Tomcat_性能优化
容器启动:
tomcat容器启动时,读取webapps目录下的web.xml文件,然后对xml进行解析,读取servlet注册信息,然后将每个应用中注册的servlet类进行加载,并通过反射的方式实例化;
JVM参数优化:
-Xms<size> 表示JVM初始化堆的大小,-Xmx<size> 表示JVM 堆的最大值;一般建议堆的最大值设置为可用内存的最大值的80%;在catalina.bat中,设置 JAVA_OPTS=’-Xms256m-Xmx512m’,表示初始化内存为256MB,可以使用的最大内存为512MB;
禁用DNS查询: 客户端DNS查询需要占用网络,并且需要获取对应IP消耗一定的时间,为了消除DNS查询对性能的影响,在tomcat_home/conf/server.xml 的 <Connector/> 节点的enableLookups参数设置为false;
调整线程数: 在tomcat_home/conf/server.xml的 <Connector/> 节点配置相关参数:
参数 | 说明 |
---|---|
minProcessors | 最小空闲连接线程数,用于提高系统处理性能; |
maxProcessors | 最大连接线程数,即并发处理的最大请求数; |
acceptCount | 允许的最大连接数,应大于等于maxProcessors |
maxThreads | Tomcat可创建最大的线程数 |
minSpareThreads | 初始化时创建的线程数 |
maxSpareTgreads | 一旦创建的线程数超过这个值,tomcat会关闭不再需要的socket线程 |
connectionTimeout | 网络连接超时,设置为0表示永不超时 |
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" disableUploadTimeout="true" />
禁止列目录下的文件: 在tomcat_home/conf/web.xml的listings 参数设置为false即可;
利用缓存和压缩: 对于静态资源最好能够缓存起来,这样就不必每次从磁盘读取,建议使用Nginx作为缓存服务器,将image,css,js等静态资源都进行缓存,有效减少后端tomcat的访问;为了加快网络传输速度,开启gzip压缩,也交由前端的Nginx来完成;
采用集群: 单个服务器性能总是有限的,我们可以使用集群来实现横向扩展;采用Nginx来作为请求分流的服务器,后端多个tomcat共享session来完成工作;
Tomcat中的部署方式:
方式一:在tomcat_home/conf/web.xml的 <host/> 节点中添加:
<Context path="/XXX" docBase="D:/XXX/XXX/WebRoot" debug="0" privileged="true">
</Context>
方式二:将WEB项目拷贝到tomcat_home/webapps/ 目录下即可;
方式三:灵活版本:在tomcat_home/conf 目录下,新建Catalina/localhost目录,在该目录下新建一个XML文件:
<Context path="/XXX" docBase="D:/XXX/XXX/WebRoot" debug="0" privileged="true">
</Context>
服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名,该方式方便的隐藏了项目名称,对于一些项目名称固定不能更改,但外部访问时又想更换路径的,十分有效;