研究了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<size> 表示JVM初始化堆的大小,-Xmx<size>表示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
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初始化时创建的线程数。 If not specified, the default of 10 is used.
maxSpareThreads 一旦创建的线程超过这个值,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自身进行优化,包括增大内存、调节并发线程数等。
分享到:
相关推荐
因此,将两者结合可以充分发挥各自的优势,提高服务器性能。 **整合工作原理:** 当用户发起请求,Apache首先接收请求并判断内容类型。如果是动态内容,Apache会通过AJP(Apache JServ Protocol)将请求转发给...
【标题】:“Tomcat性能优化”意味着我们正在探讨如何提升Apache Tomcat服务器的运行效率,使其在处理Web应用时能够更快、更稳定地工作。Tomcat是一个开源的Java Servlet容器,广泛用于部署Java Web应用程序。 ...
在实际应用中,Tomcat常与其他软件集成,如Apache HTTP Server(通常称为Apache,非此处的标签“阿帕奇”)进行负载均衡和反向代理,提供更高的性能和安全性。Apache HTTP Server是一个流行的HTTP服务器,负责处理...
Apache 和 Tomcat 是两种广泛应用的 Web 服务器软件,它们在 Web 开发领域...在实际部署中,根据应用的需求,可以通过配置 Apache 和 Tomcat 的协同工作,优化性能和资源利用,以满足不同规模和复杂度的 Web 应用场景。
13. **性能优化**:包括调整JVM参数、优化连接器配置、启用压缩、缓存控制等,以提升Tomcat的性能。 14. **故障排查**:当应用出现问题时,可以检查Tomcat的日志、使用JMX(Java Management Extensions)进行远程...
这个版本(9.0.14)代表了该软件的最新稳定版本,包含了最新的安全更新和性能优化。 在描述中提到的"tar.gz解压可用",意味着下载的文件是采用Unix/Linux系统的标准压缩格式,即tarball(.tar)文件与gzip(.gz)...
8. **安全和优化**:生产环境中,你需要考虑安全性,如设置防火墙规则,限制远程访问,以及调整Tomcat配置以优化性能。 9. **更新和维护**:当新的Tomcat版本发布时,重复上述过程,但先备份现有的Tomcat目录,...
9. **安全性与性能优化**:Tomcat 8.0.44提供了多种安全特性,如SSL/TLS支持,以保护数据传输。此外,通过合理的配置,如调整线程池大小、缓存设置等,可以优化Tomcat的性能。 10. **社区支持**:作为开源项目,...
在性能方面,Tomcat 8.5.69通过优化内部处理机制和错误修复,提升了服务器响应速度和并发处理能力。特别是对于高流量和大型企业级应用,这些改进能显著提高系统的整体性能。此外,它还加强了安全性,修复了多个安全...
还需要熟悉部署流程、日志管理、安全性设置以及性能优化等知识。同时,了解如何使用Tomcat的内置管理工具进行应用的部署、更新和移除,对于日常开发和维护工作至关重要。 总之,Apache Tomcat作为Java Web开发中的...
Apache Tomcat 8.0.33 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用...通过了解其结构和配置,我们可以有效地管理和优化服务器性能,满足各种开发和生产需求。
总的来说,Tomcat性能优化是一个涉及多个层面的过程,需要结合实际情况,从操作系统、JVM到Tomcat自身配置全面考虑,才能实现最佳的运行效果。同时,持续监控和调整是保持高性能的关键,因为随着应用的发展,优化的...
Apache Tomcat是一款开源的Java应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。这个特定的压缩包"apache-tomcat-9.0.52-windows-x64.zip"是Apache Tomcat的9.0.52版本,专为64位Windows操作...
1. **增强的性能**:通过优化线程池管理和内存分配,提高了整体性能。 2. **更好的兼容性**:支持最新的Java标准,如Java Servlet 3.0和JavaServer Pages 2.2。 3. **安全增强**:添加了更多安全特性,如SSL/TLS配置...
Apache Tomcat 8.5.72是该软件的一个特定版本,每个版本都有可能包含性能优化、安全修复和新的功能。例如,8.5.x系列可能引入了对Java 8和9的支持,提高了并发性能,并解决了之前版本中发现的已知问题。这个版本号中...
记住,这只是一个基本的配置,实际生产环境中可能还需要考虑安全、性能优化、日志管理等多个方面。对于Tomcat的管理,还有许多高级主题,如负载均衡、集群配置、JVM调优等,这些都是提升服务器性能和稳定性的重要...
1. **性能优化**:可能包含对内部算法和数据结构的改进,以提高服务器的响应速度和资源利用率。 2. **错误修复**:修复了前一版本中发现的已知问题,提高系统的稳定性和可靠性。 3. **兼容性提升**:可能增强了与...
为了确保最佳性能和安全性,你应该定期更新Tomcat到最新版本,以获取最新的安全补丁和性能优化。同时,合理配置Tomcat的运行参数(如最大线程数、内存分配等)也是至关重要的,这有助于防止服务器过载并确保服务的...
对于性能优化,你可以调整JVM参数、配置线程池大小、启用压缩、缓存静态资源等。 总的来说,Apache Tomcat 10.1.0-M8是Java Web开发中的一个重要组件,它提供了运行Java Servlet和JSP应用的基础,并且持续进行改进...