(1).....................
为了提高网站的访问性能,我们往往会在服务器端选择合适的部署环境。最简单的就是一个tomcat了,但是在高并发的情况下,非常
容易当机。因为tomcat配置的不优化。我最早也没有注意这些细节,因为我知道一个项目的性能不是通过搭建环境体现的,而是算法的高效,代码实现的合理性,以及数据库的合理使用,优化技术的使用等等。不过通过优化部署环境应该说是最直接的一种方案了。目前我知道的一种tomcat优化方案是使用tomcat线程池。只需要在server.xml中改改配置就可以了。核心配置代码:
<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文件内容如下:
<?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:
<!–
<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />
–>
创建高线程的Connector:
<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_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的内存在处理足够多的事物。”
分享到:
相关推荐
【描述】:“tomcat6.0的安装版tomcat6.0的安装版tomcat6.0的安装版tomcat6.0的安装版tomcat6.0的安装版” 描述中的重复强调了Tomcat6.0的安装版,暗示了这个压缩包可能是为用户提供了一键式的安装体验,帮助用户...
2. **性能优化**:Tomcat 6.0在处理请求和响应方面进行了许多性能优化,使其能够快速处理高并发访问,适合于中大型Web应用。 3. **内存管理和线程池**:Tomcat 6.0提供了更有效的内存管理机制和线程池配置选项,有...
Tomcat6.0提供了多种方式来优化性能和提高扩展性: 1. 并行部署:允许多个版本的同一个Web应用同时运行,方便版本升级和测试。 2. 线程池管理:通过调整最大线程数、空闲超时时间等参数,优化服务器对并发请求的...
5. **连接器优化**:Tomcat6.0支持NIO和APR(Apache Portable Runtime)连接器,提供更好的并发性能。 通过理解这些基本概念和操作,开发者可以有效地在Tomcat6.0上部署和管理Java web应用程序,从而提升开发效率和...
在解压后的"tomcat6.0"文件中,通常会包含以下几个关键部分: - `bin`目录:包含了启动和停止Tomcat的脚本,以及一些管理工具。 - `conf`目录:存放配置文件,如`server.xml`定义了服务器的配置,`context.xml`管理...
6. **性能优化**:Tomcat 6.0包含了许多性能优化选项,例如线程池管理、连接器配置、缓存策略等,可以根据应用需求进行调整。 7. **多线程与并发**:由于Web服务器需要处理多个并发请求,Tomcat通过多线程模型来...
【标题】: "Tomcat6.0.x 包" 【描述】: "Tomcat6.0windows安装程序 含有源代码" 这个压缩包文件包含了Apache Tomcat 6.0.x版本的安装程序,特别针对Windows操作系统进行了优化。Tomcat是一款广泛使用的开源Java ...
tomcat6.0是一款开源的网络服务器搭建程序。tomcat6.0具有强大的服务器搭建功能,简便易用,深受程序员们的使用,能够帮助你建立私人服务器,实现良好的交互和访问机制。 tomcat6.0简介: tomcat6.0是由Apache软件...
标题中的“解压版Tomcat6.0”指的是Apache Tomcat服务器的6.0版本的非安装版,这种版本不需要经过传统的安装过程,用户只需将其下载并解压缩到指定目录即可开始使用。Tomcat是一个开源的Java Servlet容器,主要用于...
在性能方面,Tomcat 6.0做了很多优化,比如通过多线程处理并发请求,提高了服务器的吞吐量。同时,它还支持NIO(非阻塞I/O)模式,这种模式在处理大量短连接时能提供更好的性能。不过,对于长时间保持的连接,如...
Tomcat 6.0 Tomcat 6.0 Tomcat 6.0
Tomcat6.0相对于5.0,进一步增强了对新规范的支持,优化了服务器管理和部署体验,使得开发者能够更加高效地构建和维护Java Web应用。尽管Tomcat后续还有更多版本的更新,但Tomcat5.0和6.0在历史上的地位不容忽视,为...
Apache Tomcat 6.0是Java Web应用服务器,主要用于运行基于Java Servlet和JavaServer Pages (JSP)的应用程序。它是Apache软件基金会Jakarta项目的一部分,以其开源、免费和高效的特性深受开发者喜爱。在这个版本中,...
这个安装版包括了所有你需要开始使用Tomcat6.0进行Web应用程序部署的组件。在这个教程中,我们将深入探讨如何下载、安装和配置Tomcat 6.0。 首先,我们来了解一下下载过程。要获取Tomcat 6.0,你需要访问Apache官方...
综上所述,Tomcat6.0作为一款重要的Java Web应用服务器,它的使用、配置、管理和优化是Java开发人员必须掌握的基础技能。通过学习和实践,开发者可以有效地利用Tomcat来部署和运行Java Web应用程序。
**Tomcat 6.0 安装与配置详解** Tomcat 6.0 是一个流行的开源Java Servlet容器,由Apache软件基金会开发,主要用于部署和运行Java Web应用程序。它实现了Servlet和JSP规范,是Java EE web应用服务器的一种轻量级...
在压缩包文件"tomcat6.0"中,通常会包含以下组件: 1. **bin目录**:包含了启动和停止Tomcat的脚本,以及管理工具。 2. **conf目录**:存放配置文件,如server.xml、web.xml等,用于设置服务器的行为和配置Web应用...
【标题】"Tomcat6.0——压缩包下载"涉及的是Apache Tomcat 6.0版本的安装和使用,这是一个开源的Java Servlet容器,广泛应用于Web应用的部署和开发。Tomcat6.0是该软件的一个重要里程碑,因为它在当时的Java EE 5...
【标题】:“Tomcat6.0与JSP的配置” 【描述】:“Tomcat6.0与JSP的配置教程,特别适合初学者快速掌握” 【正文】: Tomcat6.0是一个开源的、免费的Java应用服务器,主要用于运行基于Java Servlet和JavaServer ...
《IIS6.0与Tomcat6.0的整合配置详解》 在互联网服务领域,IIS(Internet Information Services)和Tomcat都是重要的服务器软件。IIS是微软提供的一个全面的Web服务器解决方案,而Tomcat则是一个开源的、基于Java的...