tomcat6+mysql5.1+dbcp性能调优
2014-03-01 10:21
369 查看
优化Tomcat6
1.内存优化其实也就是对JVM内存进行设置
配置位置:%TOMCAT_HOME%/bin下,
Window:catalina.bat
Linux/Unix:catalina.sh
首行添加:JAVA_OPTS=-Xms256m –Xmx256m
注意:Linux环境下:JAVA_OPTS=”-Xms256m –Xmx256m”,即参数要加引号,不然不起作用
以下值大部分情况为默认值,应根据具体服务器硬件配置及业务特性来配置
-Xverify:none关闭大部分类验证措施,以缩短虚拟机类加载时间
-Xms16m 堆内存初始值 (M>1G ? 1G/64 : M/64)
-Xmx256m 堆内存最大值 (M>1G ? 1G/4 : M/4)
-Xmn4m 新生代初始值 (迸发收集器下通过该值来设置,该设置优先级高于-XX:NewRatio)
-XX:NewRatio=2 老年代与新生代比值(迸发收集器下默认=7)
-XX:SurvivorRatio=8 Eden区与Survivro区的比值
-XX:PermSize=12m 永久代初始值
-XX:MaxPermSize=64m 永久代最大值
-Xss1024k 栈内存大小
-XX:MaxTenuringThreshold=15 由年轻代到年老带的GC阀值(迸发收集器下默认=4)
-XX:+UseFastAccessorMethods get,set 方法转成本地代码
2.优化线程池
配置位置:%TOMCAT_HOME%/conf下,
server.xml文件
name:线程池名称,必须唯一
namePrefix:线程池创建线程的名称前缀,线程名称一般为namePrefix+ threadNumber
maxThreads:线程池存活的最大线程数,默认值为200
minSpareThreads:线程池初始线程数(保持活跃的最小线程数),默认值为25
一般只需要配置maxThreads和minSpareThreads即可
具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\ config\executor.html
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
enableLookups:是否反查域名,取值为:true或false。 缺省值为false表示使用客户端主机名的DNS解析功能,被ServletRequest.getRemoteHost方法调用。
compression:压缩传输,取值on/off/force,默认值off?
具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\ config\http.html
3.优化Mysql
MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like 'max_connections';
进入
C:\Program Files (x86)\MySQL\MySQL Server 5.0\my.ini 修改最大连接数为1024
max_connections=1024
4.优化DBCP
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://x.x.x.x:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username=root
password=1234
#初始化连接:连接池启动时创建的初始化连接数量
initialSize=200
#最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制
maxActive=-1
#最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
maxIdle=300
#最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建
minIdle=200
#最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待
maxWait=18000
#在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程
timeBetweenEvictionRunsMillis=60000
#在每次空闲连接回收器线程(如果有)运行时检查的连接数量numTestsPerEvictionRun=5
#连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒
minEvictableIdleTimeMillis=180000
#标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,
#如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接
removeAbandoned=true
#泄露的连接可以被删除的超时值, 单位秒
removeAbandonedTimeout=300
#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
#注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串testOnBorrow=true
5.其余优化
5.1启用NIO
修改为
5.2调整文件打开数
单进程文件打开数:默认Windows下打开文件数是2000,Linux系统默认打开文件数是1024。
实际的生产环境中(获取图片等,都属于打开文件),这个值总是显得太小,经常会报“too many open files” 等这样的错误
导致系统死掉,所以我们总是要修改该值。
Linux下ulimit –a 可以查看,默认是1024
open files (-n) 1024
vi /etc/profile 加入ulimit -n 65535重新启动,就把linux改成打开文件最大数为65535
5.3精简Tomcat6的配置
删除不需要的一些管理和帮助文件,提高Tomcat的安全性
5.4在web下不显示目录列表
在web.xml中把listings改成false就行了
6.归纳、建议
归纳起来,Tomcat的优化主要涉及:
内存优化:设置相应的JVM内存参数和确定适合应用的垃圾收集器及其参数
线程优化:采用线程池,并配置相应的参数
数据库连接池优化:选择恰当的数据源,设置相应的数据源配置参数
其余优化:启用NIO、调整数据库本身的连接数目限制、调整服务器文件打开数
其余建议:
内存、线程、数据库连接池等必须一起调整,避免其中某一项成为系统瓶颈(往往前端WEB
服务器,如Httpd,Nginx等,后端数据库本身,也需要做一定的配置调整)
服务器尽量采用64位、4CPU、 4G内存及以上硬件
注意:此种情况下,可以采用64位JDK使用大内存,这时,需要控制FULL GC的频率和时间,
尽量做到不需要出现FULL GC或者夜间定时FULL GC,避免FULL GC造成的停顿,或者通过部署
多32位虚拟机来进行逻辑集群,以充分利用服务器硬件资源。
注意根据CPU数目,业务类别来设置垃圾收集器的类别,同时注意控制GC频率
注意内存、线程池、数据库连接池等的配置,不是越大越好
Tomcat内存参数配置建议书写在catalina.bat(catalina.sh)的首行,并且所有参数书写在同一行
Linux下需要给配置参数加引号
1.内存优化其实也就是对JVM内存进行设置
配置位置:%TOMCAT_HOME%/bin下,
Window:catalina.bat
Linux/Unix:catalina.sh
首行添加:JAVA_OPTS=-Xms256m –Xmx256m
注意:Linux环境下:JAVA_OPTS=”-Xms256m –Xmx256m”,即参数要加引号,不然不起作用
以下值大部分情况为默认值,应根据具体服务器硬件配置及业务特性来配置
-Xverify:none关闭大部分类验证措施,以缩短虚拟机类加载时间
-Xms16m 堆内存初始值 (M>1G ? 1G/64 : M/64)
-Xmx256m 堆内存最大值 (M>1G ? 1G/4 : M/4)
-Xmn4m 新生代初始值 (迸发收集器下通过该值来设置,该设置优先级高于-XX:NewRatio)
-XX:NewRatio=2 老年代与新生代比值(迸发收集器下默认=7)
-XX:SurvivorRatio=8 Eden区与Survivro区的比值
-XX:PermSize=12m 永久代初始值
-XX:MaxPermSize=64m 永久代最大值
-Xss1024k 栈内存大小
-XX:MaxTenuringThreshold=15 由年轻代到年老带的GC阀值(迸发收集器下默认=4)
-XX:+UseFastAccessorMethods get,set 方法转成本地代码
2.优化线程池
配置位置:%TOMCAT_HOME%/conf下,
server.xml文件
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="500"/>
name:线程池名称,必须唯一
namePrefix:线程池创建线程的名称前缀,线程名称一般为namePrefix+ threadNumber
maxThreads:线程池存活的最大线程数,默认值为200
minSpareThreads:线程池初始线程数(保持活跃的最小线程数),默认值为25
一般只需要配置maxThreads和minSpareThreads即可
具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\ config\executor.html
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="1024" compression="on"/>
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
enableLookups:是否反查域名,取值为:true或false。 缺省值为false表示使用客户端主机名的DNS解析功能,被ServletRequest.getRemoteHost方法调用。
compression:压缩传输,取值on/off/force,默认值off?
具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\ config\http.html
3.优化Mysql
MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like 'max_connections';
进入
C:\Program Files (x86)\MySQL\MySQL Server 5.0\my.ini 修改最大连接数为1024
max_connections=1024
4.优化DBCP
dbcp.initialSize=200 dbcp.maxActive=-1 dbcp.maxIdle=300 dbcp.minIdle=200 dbcp.maxWait=18000 dbcp.timeBetweenEvictionRunsMillis=60000 dbcp.minEvictableIdleTimeMillis=180000 dbcp.removeAbandoned=true dbcp.removeAbandonedTimeout=300数据库连接池:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://x.x.x.x:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username=root
password=1234
#初始化连接:连接池启动时创建的初始化连接数量
initialSize=200
#最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制
maxActive=-1
#最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
maxIdle=300
#最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建
minIdle=200
#最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待
maxWait=18000
#在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程
timeBetweenEvictionRunsMillis=60000
#在每次空闲连接回收器线程(如果有)运行时检查的连接数量numTestsPerEvictionRun=5
#连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒
minEvictableIdleTimeMillis=180000
#标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,
#如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接
removeAbandoned=true
#泄露的连接可以被删除的超时值, 单位秒
removeAbandonedTimeout=300
#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
#注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串testOnBorrow=true
5.其余优化
5.1启用NIO
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改为
<Connectorport="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
5.2调整文件打开数
单进程文件打开数:默认Windows下打开文件数是2000,Linux系统默认打开文件数是1024。
实际的生产环境中(获取图片等,都属于打开文件),这个值总是显得太小,经常会报“too many open files” 等这样的错误
导致系统死掉,所以我们总是要修改该值。
Linux下ulimit –a 可以查看,默认是1024
open files (-n) 1024
vi /etc/profile 加入ulimit -n 65535重新启动,就把linux改成打开文件最大数为65535
5.3精简Tomcat6的配置
删除不需要的一些管理和帮助文件,提高Tomcat的安全性
5.4在web下不显示目录列表
在web.xml中把listings改成false就行了
6.归纳、建议
归纳起来,Tomcat的优化主要涉及:
内存优化:设置相应的JVM内存参数和确定适合应用的垃圾收集器及其参数
线程优化:采用线程池,并配置相应的参数
数据库连接池优化:选择恰当的数据源,设置相应的数据源配置参数
其余优化:启用NIO、调整数据库本身的连接数目限制、调整服务器文件打开数
其余建议:
内存、线程、数据库连接池等必须一起调整,避免其中某一项成为系统瓶颈(往往前端WEB
服务器,如Httpd,Nginx等,后端数据库本身,也需要做一定的配置调整)
服务器尽量采用64位、4CPU、 4G内存及以上硬件
注意:此种情况下,可以采用64位JDK使用大内存,这时,需要控制FULL GC的频率和时间,
尽量做到不需要出现FULL GC或者夜间定时FULL GC,避免FULL GC造成的停顿,或者通过部署
多32位虚拟机来进行逻辑集群,以充分利用服务器硬件资源。
注意根据CPU数目,业务类别来设置垃圾收集器的类别,同时注意控制GC频率
注意内存、线程池、数据库连接池等的配置,不是越大越好
Tomcat内存参数配置建议书写在catalina.bat(catalina.sh)的首行,并且所有参数书写在同一行
Linux下需要给配置参数加引号
相关文章推荐
- Tomcat性能调优方案
- Tomcat环境性能调优
- Tomcat性能调优方案
- Tomcat性能调优方案
- Tomcat性能调优方案
- Tomcat性能调优方案
- linux tomcat 性能调优
- Tomcat 性能调优 之让小猫快乐的飞。
- Tomcat性能调优-让小猫飞奔
- Tomcat性能调优后, 启动出现警告问题 [did not find a matching property.]
- DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试
- Tomcat 7 参数性能调优
- 通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
- 通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
- linux优化tomcat容器JVM性能调优
- 资料大全-Tomcat性能调优方案下篇
- Tomcat+Nginx+Lvs部署方案与性能调优
- web性能调优和tomcat优化
- Tomcat性能调优
- DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试