为了提高网站的访问性能,我们往往会在服务器端选择合适的部署环境。最简单的就是一个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的配置文件对于优化其性能、提升安全性以及解决故障至关重要。同时,了解如何在Linux环境下服务化Tomcat,可以提高运维效率,确保服务的稳定性和可靠性。在实际工作中,开发者和运维人员...
很好的TOMCAT-5.5.X优化配置文档,详细说明了各个的参数设置
同时,理解每个配置选项的作用对于优化Tomcat性能和提高系统安全性至关重要。在Linux环境下,通常会通过SSH远程登录服务器进行这些操作,所以熟悉命令行工具和文本编辑器(如vi或nano)也是必要的。此外,及时更新...
本文将深入探讨Tomcat的配置方法,帮助你更好地理解和管理你的Web应用。 首先,让我们从基础开始,了解Tomcat的目录结构。在解压Tomcat安装包后,你会看到几个主要的目录和文件: 1. **bin**:包含启动和停止...
tomcat的优化,配置之后能很大的提高你的项目速度!!
Apache Tomcat 8.5是Java Servlet容器,...以上就是`apache-tomcat-8.5.5`配置优化后的关键点。正确调整这些设置能显著提升Tomcat的运行效率和服务质量。在实际部署时,还需要根据具体应用需求和服务器环境进一步微调。
Linux下JDK+Tomcat安装配置 在本文档中,我们将详细介绍如何在CentOS系统上安装和配置JDK和Tomcat环境。以下是整个安装和配置过程的步骤。 一、下载所需文件 在开始安装之前,需要下载两个必要的文件:jdk-7u25-...
**标题:** Tomcat6配置SSL **描述:** 在互联网中,数据传输的安全性至关重要,特别是在涉及用户敏感信息的Web应用中。SSL(Secure Sockets Layer)协议是实现这种安全性的基础,它通过加密通信和身份认证来保护网络...
Tomcat的性能可以通过调整配置文件中的各种参数来优化,例如最大线程数、连接超时时间、缓存大小等。具体的优化策略需要根据实际应用场景和负载情况进行调整。 总结:配置Tomcat8不仅涉及安装、环境变量设置,还...
同时,使用诸如JMeter、VisualVM等工具进行性能测试和监控,可以更好地优化集群配置。 综上所述,Tomcat集群配置涉及到多个层面,包括负载均衡策略、会话管理、故障处理等。正确配置和维护Tomcat集群,能显著提升...
6. **虚拟主机配置**:如何在同一台机器上配置多个独立的Tomcat实例,或者在单个Tomcat中设置多个虚拟主机,以托管不同的Web应用。 7. **部署Web应用**:演示如何将WAR文件或已解压的目录放入webapps目录,以及如何...
### Tomcat 安全配置与性能优化 #### 一、Tomcat内存优化 ##### 1. JAVA_OPTS 参数说明 在进行Tomcat的性能优化时,内存优化是非常关键的一部分。这通常涉及对Tomcat启动参数的调整,特别是设置`JAVA_OPTS`参数。...
【Tomcat集群优化详细配置】 在IT行业中,服务器性能优化是一项关键任务,特别是在高并发、大规模用户访问的场景下。Tomcat,作为广泛使用的...正确配置和优化Tomcat集群,对于提升服务质量和用户体验具有重要意义。
【正文】 Tomcat是Apache软件基金会的Jakarta项目下的一个开源Web服务器和Servlet容器,它以其轻量级、高效和可...通过深入理解和熟练应用这些配置,可以有效地管理和优化Tomcat服务器,提升Web应用的稳定性和性能。
【文件】:“Tomcat7性能优化调优.docx”可能包含了关于Tomcat7性能优化的具体步骤、最佳实践和案例分析,这对于我们深入理解如何优化Tomcat7非常有价值。 以下是一些可能的Tomcat性能优化知识点: 1. **内存配置*...
Linux下Tomcat的安装配置是Java开发者在服务器端部署应用程序时必须掌握的一项基本技能。Tomcat是一款开源的、轻量级的Java应用服务器,主要用于执行Servlet和JavaServer Pages(JSP)应用程序。以下是对Tomcat在...
以下是关于如何配置Apache2.2与Tomcat6的详细步骤和知识点: 1. **Apache2.2简介**: Apache2.2是Apache HTTP Server的一个版本,主要负责处理HTTP请求,提供静态网页内容。它具有良好的稳定性和丰富的模块支持。 ...
总结来说,虽然Tomcat6和Tomcat7的配置大体相似,但在JSP和Servlet版本上有所升级,因此Tomcat7提供了更多新功能和优化。理解这些配置步骤对于开发者来说至关重要,有助于快速搭建和调试Java Web应用。
6. **性能优化**:Tomcat6可以通过调整线程池大小、JVM堆大小、连接器参数等进行性能优化。例如,增大MaxThreads和MinSpareThreads以处理更多并发请求,设置合理的MaxKeepAliveRequests防止资源耗尽。 7. **故障...