一、tomcat优化
关于tomcat优化可以考虑从内存、并发、缓存三个方向进行优化
1、查看tomcat服务器状态
如上启动tomcat之后点击server status,需要登录,用户名和密码以及权限可以在conf/tomcat-users进行配置
登录之后
可以看到当前tomcat服务器状态
2、tomcat之内存优化
3、tomcat之并发优化
Tomcat 默认配置的最大请求数是150,也就是说同时支持150 个并发,当然了,也可以将其改大。当某个应用拥有250 个以上并发的时候,应考虑应用服务器的集群。具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给JVM 的内存越多性能也就越高,但也会加重GC 的负担。
在 tomcat 配置文件 server.xml 中的Connector配置,和连接数相关的参数有
- maxThreads 客户请求最大线程数 ,大并发请求时,tomcat能创建来处理请求的最大线程数,超过则放入请求队列中进行排队,默认值为200;
- minSpareThreads Tomcat初始化时创建的 socket 线程数 ,最小空闲线程数,任何情况都会存活的线程数,即便超过了最大空闲时间,也不会被回收,默认值4;
- maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 ,最大空闲线程数,在最大空闲时间(maxIdleTime)内活跃过,此时空闲,当空闲时间大于maxIdleTime则被回收,小则继续存活,等待被调度,默认值50;
- enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 ,取值为:true 或 false。为了提高处理能力,应设置为 false
- redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
- acceptAccount 监听端口队列最大数,满之后客户请求会被拒绝(不能小于maxSpareThreads ) ,当最大线程数(maxThreads)被使用完时,可以放入请求队列排队个数,超过这个数返回connection refused(请求被拒绝),一般设置和maxThreads一样,不过这个具体需要根据自己的应用实际访问峰值和平均值来权衡,默认值为100;
- connectionTimeout 连接超时 ,网络连接超时,假设设置为0表示永不超时,这样设置隐患巨大,通常可设置为30000ms,默认60000ms。
- minProcessors 服务器创建时的最小处理线程数 ,用于提高系统处理性能,默认值为 10
- maxProcessors 服务器同时最大处理线程数 ,即:并发处理的最大请求数,默认值为 75
- URIEncoding URL统一编码
- maxIdleTime: 最大空闲时间,超过这个空闲时间,且线程数大于minSpareThreads的,都会被回收,默认值1分钟(60000ms);
配置示例
<Connector port="9027" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>
其中和最大连接数相关的参数为 maxProcessors 和 acceptCount。如果要加大并发连接数, 应同时加大这两个参数。 web server 允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个 左右,Linux 是 1000 个左右
4、缓存优化
也是在在 tomcat 配置文件 server.xml 中的Connector配置,参数如下
- compression 打开压缩功能
- compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
- compressableMimeType 压缩类型
- connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
如下示列
<Connector port="9027" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>
二、tomcat session
1、设置tomcat seesion过期时间
conf/web.xml 单位:分钟 默认30分钟
<session-config> <session-timeout>30</session-timeout> </session-config>