现在很多公司用Apache和Tomcat做负载均衡,所以一定需要考虑对Apache和Tomcat进行性能优化,以便能够充分发挥硬件和软件的处理能力。
一.Apache Http Server
影响性能的最核心特性:MPM(Multi-Processing Modules,多道处理模块),进入httpd-2.0.45目录,运行以下代码:
$ ./configure --help|grep mpm
显示如下:
--with-mpm=MPM Choose the process model for Apache to use. MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}
上述操作用来选择要使用的进程模型,即哪种MPM模块。prefork就是Unix平台上缺省的MPM。查看Httpd.conf
<IfModule mpm_prefork_module> # StartServers 5 # MinSpareServers 5 # MaxSpareServers 10 # MaxClients 150 # MaxRequestsPerChild 0 ServerLimit 2048 //可配置的进程数的上限 ThreadLimit 64 //设置在每个子进程可配置的线程数上限 StartServers 8 //初始化进程数 MaxClients 2048//设定的是Apache可以同时处理的请求,是最重要的参数 MinSpareThreads 64//最小空闲进程 MaxSpareThreads 256 //最大空闲进程 ThreadsPerChild 64 MaxRequestsPerChild 0 //(默认10000)每个子进程可处理的请求书,每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。 </IfModule>
StartServers, MinSpareServers, MaxSpareServers, MaxClients指令用于调节父进程如何产生子进程。
MaxClients:设定的是Apache可以同时处理的请求数,默认值是256。若要提高最大请求数,需要添加ServerLimit数,ServerLimit最大支持20000,注意:ServerLimit需要放置于MaxClient前面.一般设置小于MaxClients。
MaxRequestsPerChild指令控制服务器杀死旧进程产生新进程的频率。
MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。
MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。
二.Tomcat性能优化
1.JVM内存调整
当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。
-Xms 表示JVM初始化堆的大小,-Xmx表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation),如class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:PermSize=512MB 最小尺寸,初始分配。
-XX:MaxPermSize=512MB 最大允许分配尺寸,按需分配。
在Tomcat安装目录下的bin/catalina.sh文件下添加。
JAVA_OPTS="-Xmx2048M -Xms1024M -XX:PermSize=512M -XX:MaxPermSize=512M"; 设置了初始堆大小为2014M,最大值为2048M。永久保存区域初始大小512M,最大允许分配尺寸512内存。
2.禁用DNS查询
Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client. Set to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance). By default, DNS lookups are enabled.
Server.xml中的Connector 节点中进行设置:修改server.xml文件中的enableLookups参数值为false。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false" redirectPort="8443" />
3.调整线程数
Server.xml中的Connector 节点中进行设置如下:
minProcessors:服务器启动时创建的处理请求的线程数。
maxProcessors:最大可以创建的处理请求的线程数。
maxThreads:这个值表示Tomcat可支持的客户请求最大线程数。 默认为200;If not specified, this attribute is set to 200。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。The default value is 100
connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
minSpareThreads:Tomcat初始化时创建的socket 线程数。 If not specified, the default of 10 is used.
maxSpareThreads:Tomcat连接器的最大空闲 socket 线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。 (tomcat5以后已删除)
<Connector port="80" maxThreads="150" minSpareThreads="25" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"/>
三.总结
首先要争取使得操作系统以及网络资源达到最优,并且最好使用高版本的JDK。对于有大量静态页面的系统,采用Apache集成Tomcat的方式,把静态页面交由Apache处理,动态部分交由Tomcat处理,能极大解放Tomcat的处理能力。通过Apache和Tomcat负载提供稳定高并发的性能需求。同时需要对Tomcat自身进行优化,包括增大内存、调节并发线程数等。
文章来源:http://tech.it168.com/a2011/0624/1209/000001209198.shtml
相关推荐
虽然Tomcat性能优秀,但处理静态资源的效率相比Apache略逊一筹。因此,将两者结合可以发挥各自优势,提供一个既高效又灵活的Web服务环境。 三、Apache与Tomcat的连接方式 1. ** mod_jk 模块 ** Apache的mod_jk...
它的2.4.x版本引入了许多性能优化和安全增强,例如更好的多线程支持、模块化设计和更高效的内存管理。 Tomcat,则是Apache软件基金会的Java Servlet和JavaServer Pages(JSP)容器,专为运行Java Web应用程序而设计...
### Tomcat7性能优化策略详解 #### 一、引言 在现代Web应用开发中,Tomcat作为一款广泛使用的开源...希望这些方法能够帮助开发者们更好地理解和掌握Tomcat性能优化的关键技术,从而为用户提供更加稳定高效的Web服务。
Tomcat性能优化 Tomcat 是一个流行的 Java Web 服务器,它的性能优化对网站的并发能力有着至关重要的影响。在本文中,我们将讨论 Tomcat 的性能优化方法,以提高网站的并发能力。 一、目的 通过优化 Tomcat,提高...
通过上述配置,Apache Server 2.2和Tomcat7集群可以提供高可用和高效的Web服务,同时通过session共享保证了用户会话的连续性,提升了用户体验。提供的LICENSE、NOTICE和README文件通常包含了软件授权信息、版权声明...
在实际应用中,Tomcat常与其他软件集成,如Apache HTTP Server(通常称为Apache,非此处的标签“阿帕奇”)进行负载均衡和反向代理,提供更高的性能和安全性。Apache HTTP Server是一个流行的HTTP服务器,负责处理...
在Windows环境下,将Apache HTTP Server和Tomcat集成是常见的服务器配置任务,以便利用Apache的静态内容处理能力以及Tomcat对动态内容(如JSP、Servlet)的支持。以下是一份详细的步骤指南,帮助你理解整合过程。 *...
Apache HTTP Server是一款开源的Web服务器,而Tomcat是用于部署Java Servlet和JSP应用的轻量级应用服务器。两者结合可以实现动态内容和静态内容的高效分发。 描述中提到的"博文链接:...
通过对Tomcat7的优化与性能调优,不仅能够显著提升其处理高并发请求的能力,还能确保应用程序的稳定性和可靠性。在实际操作过程中,开发者应根据自身业务需求灵活调整各项配置参数,以达到最佳效果。此外,还需定期...
Tomcat性能调优方案 一、操作系统调优 操作系统调优是指通过调整操作系统的设置来提高服务器的性能。对于操作系统优化来说,需要尽可能地增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。通过...
随着互联网应用的日益增长,网站并发访问的需求越来越高,而作为一款广泛使用的开源Web容器,Apache Tomcat 的性能优化显得尤为重要。本文将针对Tomcat7进行一系列的性能优化措施探讨,旨在提升其并发处理能力。 ##...
Apache HTTP Server 是世界上最广泛使用的开源 Web 服务器,它支持多种操作系统和编程语言。Apache 提供了丰富的模块扩展,可以处理静态资源如 HTML、CSS、JavaScript 文件,以及动态内容如 PHP、Perl 或者通过 ...
Apache+JK+Tomcat搭建负载均衡是一种常见的高可用性和性能优化策略,主要目的是分散网络流量,提高服务的稳定性和响应速度。这个方案特别适合大型网站或应用,可以有效防止单点故障,提升用户体验。 首先,负载均衡...
Apache主要用于处理静态内容,而Tomcat则专为运行Java Servlet和JavaServer Pages(JSP)设计。为了将这两者结合起来,提高性能和负载均衡,通常会使用Apache的mod_jk模块进行整合。本文件将详细介绍如何配置mod_jk...
Apache Tomcat 8.5.35 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本特别针对在64位Windows操作系统上运行进行了优化。在本文中,我们将...
【Tomcat7性能优化】 Tomcat7性能优化的目的是提高网站的并发能力,确保服务器能够高效地处理更多用户的请求,从而提升用户体验。优化主要涉及服务器资源的管理和Tomcat的配置调整。 1. 服务器资源 服务器的硬件...
Apache 和 Tomcat 是两种广泛应用的 Web 服务器软件,它们在 Web 开发领域...在实际部署中,根据应用的需求,可以通过配置 Apache 和 Tomcat 的协同工作,优化性能和资源利用,以满足不同规模和复杂度的 Web 应用场景。
9. **性能优化**: 每个新版本的Tomcat都会进行性能优化,10.0.20也不例外,可能会包含内存管理和线程调度等方面的改进。 10. **安全性修复**: 作为维护版本,10.0.20很可能包含了已知安全漏洞的补丁,确保用户的...
- 测试每个站点是否能正常通过HTTP和HTTPS访问,确认所有配置正确无误。 - 根据需求调整性能设置,如调整Tomcat的线程池大小、内存分配等。 通过以上步骤,我们成功地在Linux和Windows上搭建了支持HTTPS的多站点...