1.tomcat 内存参数的管理与设置
tomcat/bin/catalina.bat
在rem 的后面增加如下参数
set JAVA_OPTS= -Xms256m -Xmx256m -XX:MaxPermSize=64m
JAVA_OPTS='-Xms256m -Xmx512m'
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m
startup.bat
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_24
#SET CATALINA_HOME=D:\Program Files\Apache Software Foundation\tomcat5.0.28
2.JDK的设置
tomcat/bin/catalina.bat
在最后一个rem后面增加
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0
3.虚拟目录的管理
/tomcat/conf/server.xml
第一行是以前默认存在的,第二行是新增的
<Context path="" docBase="ROOT" debug="0" reloadable="true"></Context> <Context path="/jsp/a" reloadable="true" docBase="D:\workplace\WebContent" />
4、设置tomcat下的连接数:
tomcat/conf/server.xml
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
- maxThreads="150" 表示最多同时处理150个连接
- minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待
- maxSpareThreads="75" 表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。
<Connector className="org.apache.coyote.tomcat.CoyoteConnector" port="8080" minProcessors="10" maxProcessors="1024" enableLookups="false" redirectPort="8080" acceptCount="1024" debug="0" connectionTimeout="30000"maxThreads=300minSpareThreads="25" />
2\示例如下:
其他参考资料: http://www.iteye.com/topic/190329
1、对于中间件为tomcat的应用系统,尽量采用较高版本的tomcat进行部署(如tomcat6),并开启tomcat6的nio模块
2、采用tomcat自身的连接池进行http连接的分配,不要采用手工的方式进行http连接的释放和分配
3、对于读多写少的应用系统,尽量需要采用memcache来缓解数据库的读压力
4、对于高并发的写操作,尽量将写操作,放入缓存队列,不要直接插入数据到数据库,可采用后台程序定时取队列数据入数据库
5、对于涉及到事务操作的表,mysql的表类型尽量采用innodb,若事务性不强的操作尽量采用myisam类型
6、对应用系统的SQL进行优化,避免全表扫描的SQL出现
7、对于高性能服务器,尽量在该机器上配置多个tomcat做负载均衡,但一台服务器最多tomcat数量不要超过8个,大于8个tomcat性能提升不再明显
8、采用SQL分析数据库中无用的索引并删除
9、采用SQL分析数据库中各个关键数据表的状态,当状态不正常时使用mysql工具进行表状态的修复
10、对于应用程序中的方法尽量采用异步方法,避免过多的采用同步方法进行调用
11、对于应用程序中的调试信息,采用log4j替代传统的System.out.println
12、对于应用系统中的js、css、image、flash等非动态元素采用动静分离的方式进行部署,对于非动态页面全部转向apache或nginx进行处理
13、对于采用硬件负载均衡的应用系统,尽量采用F5+nginx+tomcat的方式进行部署,避免采用F5+tomcat的方式进行部署,因为F5在挂载应用时是与服务器的ip绑定的,这样做不能充分发挥服务器的性能
14、考虑采用虚拟化的方式进行部署,使服务器的性能利用率达到最优
http://www.ibm.com/developerworks/cn/web/wa-aj-hiperform/
http://www.javaeye.com/topic/190329