为了提高网站的访问性能,我们往往会在服务器端选择合适的部署环境。最简单的就是一个tomcat了,但是在高并发的情况下,非常
容易当机。因为tomcat配置的不优化。我最早也没有注意这些细节,因为我知道一个项目的性能不是通过搭建环境体现的,而是算法的高效,代码实现的合理性,以及数据库的合理使用,优化技术的使用等等。不过通过优化部署环境应该说是最直接的一种方案了。目前我知道的一种tomcat优化方案是使用 tomcat线程池。只需要在server.xml中改改配置就可以了。核心配置代码:
Java代码 收藏代码
1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
2. maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>
(2).....................(环境Linux)
进入tomcat目录,启动:
./catalina.sh run
看着终端的屏幕开是刷,显示出清晰的tomcat6的启动日志仅仅的压力测试直接500,在未做其余任何调整的情况下通过,其中表单提交过程耗是在12秒左右,稍微慢了点,王老五反应数据库链接数突破到19后停滞,那么继续优化
2、调整platform数据源的线程设置
假设发布目录为Webroot,那么在WebRoot/META-INF/下建立context.xml文件,调整数据源配置
(注:tomcat6才能支持发布目录数据源配置,以前的版本改文件路径在tomcat安装路径下的conf目录中)
context.xml文件内容如下:
Java代码 收藏代码
1. <?xml version=”1.0″ encoding=”UTF-8″?>
2. <Context path= “/WebRoot ” privileged= “true” reloadable=”false”>
3. <Resource name=”sysDataSource” auth=”Container”
4. type=”javax.sql.DataSource” maxActive=”5000″ maxIdle=”300″ maxWait=”60000″
5. logAbandoned=”true” username=”yfjz” password=”password”
6. driverClassName=”oracle.jdbc.driver.OracleDriver”
7. url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
8. <Resource name=”yfjzDataSource” auth=”Container”
9. type=”javax.sql.DataSource” maxActive=”4000″ maxIdle=”200″ maxWait=”60000″
10. logAbandoned=”true” username=”yfjz” password=”password”
11. driverClassName=”oracle.jdbc.driver.OracleDriver”
12. url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
<?xml version=”1.0″ encoding=”UTF-8″?>
<Context path= “/WebRoot ” privileged= “true” reloadable=”false”>
<Resource name=”sysDataSource” auth=”Container”
type=”javax.sql.DataSource” maxActive=”5000″ maxIdle=”300″ maxWait=”60000″
logAbandoned=”true” username=”yfjz” password=”password”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
<Resource name=”yfjzDataSource” auth=”Container”
type=”javax.sql.DataSource” maxActive=”4000″ maxIdle=”200″ maxWait=”60000″
logAbandoned=”true” username=”yfjz” password=”password”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
</Context>
(注:再次测试300户时,数据链接监控发现线程上到199,线程已经解禁了)
3、调增tomcat6响应池:
查找tomcat6安装目录下conf目录中的server.xml文件,进行编辑
屏蔽tomcat默认Connector:
Java代码 收藏代码
1. <!–
2.
3. <Connector port=”8080″ protocol=”HTTP/1.1″
4. connectionTimeout=”20000″
5. redirectPort=”8443″ />
6.
7. –>
<!–
<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />
–>
创建高线程的Connector:
Java代码 收藏代码
1. <Connector port=”8080″ redirectPort=”8443″
2. maxHttpHeaderSize=”8192″ useBodyEncodingForURI=”true”
3. minProcessors=”100″ maxProcessors=”5000″
4. maxThreads=”5000″ minSpareThreads=”1000″ maxSpareThreads=”4000″
5. enableLookups=”false” acceptCount=”3500″
6. compression=”on” compressionMinSize=”2048″
7. compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”
8. connectionTimeout=”60000″ disableUploadTimeout=”true” debug=”0″ URIEncoding=”UTF-8″/>
<Connector port=”8080″ redirectPort=”8443″
maxHttpHeaderSize=”8192″ useBodyEncodingForURI=”true”
minProcessors=”100″ maxProcessors=”5000″
maxThreads=”5000″ minSpareThreads=”1000″ maxSpareThreads=”4000″
enableLookups=”false” acceptCount=”3500″
compression=”on” compressionMinSize=”2048″
compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”
connectionTimeout=”60000″ disableUploadTimeout=”true” debug=”0″ URIEncoding=”UTF-8″/>
(注:加入响应线程数控制,加入压缩传递模式,调整超时设置,屏蔽调试模式)
4、增加tomcat6启动内存:
查找tomcat6安装目录下bin目录中catalina.sh文件,在开始增加如下:
Java代码 收藏代码
1. JAVA_OPTS=” -Xms1400m -Xmx1400m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
JAVA_OPTS=” -Xms1400m -Xmx1400m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
5、增加oracle响应线程数:
王老五将oracle数据线程响应定为1000,这是测试用的,同时监控oracle链接资源
(想知道这个怎么设置的,认识王老五的就找他聊聊,不认识的就网上找找吧,呵呵)
6、开始压测1000户
晶晶开始测试后,确发现有十来户一直处于等待状态,R61本本cpu资源从96%降到10%以下,硬盘灯狂闪,Desktop系统操作响应减缓使用硬盘资源检查命令发现,硬盘使用资源为100%,说明硬盘满了,系统在寻找缓存操作,硬盘和内存疯狂交互这真是“一波刚平一波起,平湖落石浪千层……”
第五章 查硬盘日志累计,斩输出平台生春
通过查找,系统硬盘资源撑爆的原因是tomcat日志和platform日志无限追加的原因,解决办法如下:
1、调整platform日志log4j.properties
将首行的“log4j.rootLogger = DEBUG, A1, A2”改为“log4j.rootLogger = INFO, A1”
(注:很简单吧:-)
2、调整tomcat6的日志输出
将下面内容注释掉:
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
(注:行首加#号就行)
3、晶晶继续压测,结果定在2100多户左右
尾声:
从整个过程来看,PlatForm在抗压性上表现突出,自始至终未出现崩盘情况,所有失败用户的错误提示都为“time-out”,只是登录响应时间占总流程比重稍高,仍续继续调整;该测试可以说改变了我对tomcat的定义,在各项优化做足的情况下,tomcat抗亚能力优秀, 也从未崩盘,只是单线程响应是一直诟病的,反映在当集群用户出现是表单响应时间便长,致使我不得不增大了超时时间(原来定在20秒,后来调整到1分钟); 系统容载量是一个综合性的过程,在整个压测环节中每一步都十分重要,不能仅仅依靠某一个环节的优化就可以安了,在2100户时,数据库链接超过800线, 系统cpu使用量高达96%,硬盘资源几乎不耗费,这说明2G的内存在处理足够多的事物。”
分享到:
相关推荐
tomcat优化配置tomcat优化配置tomcat优化配置tomcat优化配置
很好的TOMCAT-5.5.X优化配置文档,详细说明了各个的参数设置
tomcat GC 优化配置
tomcat的优化,配置之后能很大的提高你的项目速度!!
apache,tomcat集群优化详细配置
1 文档目的 4 2 读者对象 4 3 网络拓扑图 4 4 具体步骤 4 4.1 需要事先下载的文件 4 4.2 安装 4 4.2.1 安装jdk、Tomcat 4 ...4.4 配置、优化Tomcat 7 4.4.1 修改Tomcat的配置文件 7 4.4.2 优化Tomcat 7
apache-tomcat-8.5配置优化后,配置好了,tomcat用户名密码,可直接使用admin
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS参数
tomcat常规优化配置,有相关解释,超实用。
tomcat 高并发 1000每秒 服务器优化 高性能 tomcat 高并发 1000每秒 服务器优化 高性能
Tomcat配置详解 Tomcat参数配置 Tomcat参数优化
TOMCAT5 5 配置优化
tomcat 启动优化和并发并发优化配置
Tomcat配置优化(完整版),让你的tom猫飞起来
该文件简单的描述了Tomcat在linux系统下的安装与配置过程。
Tomcat协同配置参考优化,可以看看。。。。
tomcat配置、优化
tomcat8优化配置,jvm 内存溢出,服务器连接效率
tomcat7 优化 性能调优,优化tomcat的配置,修改启动模式,开启并且使用线程池,JVM优化,图文说明
RHEL7.0下的TOMCAT安装、配置及优化 一、安装前准备 3 二、JDK安装 2.1、建立tomcat用户 2.2、将JDK安装文件上传到服务器 2.3、安装JDK 2.4、配置JDK环境变量 2.5、测试是否正确安装 三、Tomcat安装及配置 ...