`

Apache2.2优化&&Tomcat优化

 
阅读更多

Tomcat7 优化 :

1.conf/ server.xml :

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="1000" minSpareThreads="50"/>

 

 <Connector executor="tomcatThreadPool"  
    port="8888" protocol="HTTP/1.1"    
    connectionTimeout="20000" enableLookups="false"  
    redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000"
    compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>  

 compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata" 
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain

-- 启用 tomcat  GZIP 压缩.

 

  • compression="on" 打开压缩功能 
  • compressionMinSize="50" 启用压缩的输出内容大小,默认为2KB 
  • noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩 
  • compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩

 

 

 

测试方法

 

启用了TOMCAT这个压缩功能后,我们如何来测试压缩是否有效呢?

 

首先Tomcat是根据浏览器请求头中的accept-encoding来判断浏览器是否支持压缩功能,如果这个值包含有gzip,就表明浏览器支持gzip压缩内容的浏览,我们可以用两种方法来验证压缩是否生效。

 

通过浏览器直接请求

 

       大家直接通过浏览器访问启用了压缩配置的服务器,然后通过抓包工具查看抓到的数据包,如果内容有很多你看不懂,就说明已经启用压缩功能了。

 

通过程序模拟请求

我们用httpclient写一个简单的测试程序,代码如下:
  1. @Test  
  2. public void testGzip() {  
  •         HttpClient httpClient = new HttpClient();  
  •         GetMethod getMethod = new GetMethod("http://localhost/admin.jsp");  
  •         try {  
  •                 getMethod.addRequestHeader("accept-encoding""gzip,deflate");  
  •                 getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)");  
  •                 int result = httpClient.executeMethod(getMethod);  
  •                 if (result == 200) {  
  •                         System.out.println(getMethod.getResponseContentLength());  
  •                         String html = getMethod.getResponseBodyAsString();  
  •                         System.out.println(html);  
  •                         System.out.println(html.getBytes().length);  
  •                 }  
  •         } catch (HttpException e) {  
  •                 e.printStackTrace();  
  •         } catch (IOException e) {  
  •                 e.printStackTrace();  
  •         } finally {  
  •                 getMethod.releaseConnection();  
  •         }  
  • }  


  执行这个junit程序,看看它所输出的是什么内容,如果输出的是一些乱码,并且打印内容的长度远小于实际的长度,就说明我们的配置生效了,通过一些其它验证工具,会发现网站浏览速度会明显提升。

 
备注:如果发现内容没有被压缩,可以考虑调整compressionMinSize大小,如果请求资源小于这个数值,则不会启用压缩。
 二: apache2.2 优化:
1.修改conf/httpd.conf ,查找”Include conf/extra/httpd-mpm.conf” 去掉前面的注释符号’#’
2. 打开conf/extra/httpd-mpm.conf 查找”<IfModule mpm_winnt_module>” ,将其下面的ThreadsPerChild 的值调大,比如默认150的,改为300或600或1500等等。此处需要注意,如果服务器的配置较低的话,你设置的ThreadsPerChild 的值又太大会导致cpu过高,并且波动很大。

代码如下:

  1. <IfModule mpm_winnt.c> 

  2.   ThreadsPerChild 250 

  3.   MaxRequestsPerChild 5000 

  4. </IfModule> 

  重启apache,测试,负载够用了:)

 
3. 在Apache的配置文件httpd.conf中,设置: 
Listen 80
以下:
KeepAlive on
KeepAliveTimeout 15
MaxKeepAliveRequests 1000
UseCanonicalName on

最能反应Apache服务器性能的Requests per second,即每秒完成的请求次数从201.32提升到341.70,提升幅度为70%。虽然在现实环境中,不可能有这么多的同一连接发出的请求,但启用KeepAlive确实在一定程度上可以提高Apache服务器的吞吐量和反应速度。 
4.  打开UseCanonicalName模块  UseCanonicalName on
5. 关闭多余模块  一般来说,不需要加载的模块有,mod_include.so、mod_autoindex.so、mod_access.so、mod_auth.so.

  根据实际经验,通过Apache和Tomcat集群的方式提高系统性能的效果十分明显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单Tomcat时的压力。

 

三:Apache 的 MPM(Multi -Processing Modules,多道处理模块):

1.Apache 的 MPM(Multi -Processing Modules,多道处理模块),经过适当的配置,可以提高服务器的负载能力 。

Linux和Windows版本的Apache ,MPM不尽相同,感觉Linux更强大些,可以同时开好几个进程进行Apache的响应。

我机子上的是Wamp环境,在httpd.conf中有这样一段:

# Server-pool management (MPM specific)
# Include conf/extra/httpd-mpm.conf


注释掉,在httpd-mpm.conf中,会出现好几种类型的配置,要根据自己的具体环境配置相应的文件 。

 

看到里面有mpm_winnt.c ,我们就在httpd-mpm.conf的<IfModule mpm_winnt_module>进行配置

<IfModule mpm_winnt_module>
    
  ThreadsPerChild      150
  
  MaxRequestsPerChild    0 

</IfModule>


其中,ThreadsPerChild 是指一个进程最多拥有的线程数(Windows版本,貌似不可以开启多个进程),一般100-500就可以,

根据服务器的具体性能来决定。MaxRequestsPerChild,是指一个线程最多可以接受的连接数,默认是0,就是不限制的意思,

但是网上有文章说,0 会导致内存泄露。所以,可以根据实际情况,配置一个比较大的值。我估计Apache会在几个线程之间进

行轮询,找到负载最轻的一个线程来接受新的连接。

 

另附: Apache 官方MPM说明http://httpd.apache.org/docs/2.2/zh-cn/mpm.html

 

 

 

分享到:
评论

相关推荐

    Apache2.2+Tomcat5.5整合配置教程

    Apache2.2与Tomcat5.5的整合配置是一个常见的任务,特别是在那些希望利用Apache作为前端服务器处理静态内容,而将动态请求转发给Tomcat处理的环境中。这种配置可以提高服务器性能并优化资源分配。 首先,我们需要...

    apache2.2 + tomcat6 配置方式

    以下是关于如何配置Apache2.2与Tomcat6的详细步骤和知识点: 1. **Apache2.2简介**: Apache2.2是Apache HTTP Server的一个版本,主要负责处理HTTP请求,提供静态网页内容。它具有良好的稳定性和丰富的模块支持。 ...

    Apache2.2 tomcat6集群练习

    Apache2.2与Tomcat6集群配置教程 在IT行业中,服务器集群是一种常见的技术,用于提高系统的可用性和可扩展性。本教程将详细介绍如何在Apache2.2与Tomcat6环境下搭建集群,以实现负载均衡和高可用性。Apache作为前端...

    apache2.2+mod_jk

    6. **启动和测试**:启动Apache和Tomcat,然后通过访问配置过的URL来测试Apache2.2是否成功将请求转发到Tomcat。可以使用简单的Servlet或JSP页面来进行测试。 7. **优化和监控**:根据实际需求,可以进一步调整`mod...

    Apache2.2和Tomcat7集成负载均衡(软件和教程)

    【Apache2.2和Tomcat7集成负载均衡】 在现代Web应用环境中,为了提供高可用性和性能优化,经常需要将HTTP服务器(如Apache)与应用服务器(如Tomcat)进行集成,并实现负载均衡。Apache2.2和Tomcat7的集成能够充分...

    Windows下Apache2.2 + Tomcat5.5 + Apr配置备忘录

    本备忘录主要关注如何在Windows上配置Apache2.2与Tomcat5.5,同时利用Apr(Apache Portable Runtime)库提升性能。 Apache2.2是世界上最流行的开源HTTP服务器,它处理静态文件非常高效。而Tomcat5.5则是一个开源的...

    apache2.2与tomcat6.x+mod_jk整合

    在Apache2.2与Tomcat6.x的整合中,mod_jk模块扮演了关键角色,它是Apache的Jakarta项目的一部分,专门用于连接Apache和Tomcat。 1. **mod_jk模块介绍** mod_jk是Apache与Tomcat间通信的桥梁,它实现了Apache的URL...

    Apache2.2+tomcat6.0搭建负载均衡服务器

    Apache2.2与Tomcat6.0的组合可以构建一个高效、可靠的负载均衡服务器系统,以分散客户端请求到多个后端应用服务器,提高整体服务的可用性和响应速度。以下是搭建和配置的关键步骤及知识点: 1. **Apache2.2安装配置...

    apache2.2 tomcat6.0 集群与负载均衡

    Apache 2.2 和 Tomcat 6.0 集群与负载均衡是构建高可用性和高并发Web应用的关键技术。在大型系统中,通过设置集群可以分散服务器压力,提高服务稳定性;而负载均衡则能确保请求均匀分配到各个节点,避免单一节点过载...

    apache2.2+tomcat6集群配置

    Apache2.2与Tomcat6集群配置是一种常见的Web服务架构,用于提高网站的可用性和可扩展性。在Windows环境下,这种配置可以实现负载均衡,确保即使单个服务器出现故障,整个系统仍然能继续运行,同时分散请求以降低单一...

    apache2.2+tomcat6.0.doc

    Apache2.2与Tomcat6.0的组合可以创建一个高效能、高可用性的Web服务器环境,通过负载均衡技术,可以有效地分散用户请求到多个Tomcat实例,从而提高系统的响应速度和整体性能。以下是关于这个配置的详细知识讲解: 1...

    Apache 2.2 + Tomcat 6.0 + MySQL 5.0 + mod_jk 整合

    ### Apache 2.2 + Tomcat 6.0 + MySQL 5.0 + mod_jk 整合 本文旨在深入探讨如何将Apache 2.2、Tomcat 6.0、MySQL 5.0以及mod_jk进行有效的整合,以构建一个高性能、可扩展的应用服务器环境。这种整合方式不仅能够...

    Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

    在Windows环境下,Apache2.2和Tomcat6的组合是一个常见的Web服务器架构,用于搭建集群、实现负载均衡和处理session共享。Apache作为前端反向代理服务器,负责分发请求到后端的多个Tomcat实例,以提高应用的可用性和...

    apache2.2 和2.4 mod_jk 1.2.4

    Apache 2.2是较旧但稳定的一个版本,而Apache 2.4则引入了许多性能优化和安全增强,包括新的模块架构、事件模型以及更好的多线程支持。 `mod_jk`模块是Apache的Java Kerenl(JK)的一部分,它的主要任务是处理...

    Apache2.2 for Linux安装手册

    Apache2.2是其一个重要的版本,提供了许多增强的功能和优化。在Linux环境下安装Apache2.2的步骤如下: 1. **获取安装包**:首先,你需要下载Apache2.2的源码安装包,例如Apache2.2.19的源码包`apache_2.2.19.tar.gz...

    apache2.2+tomcat6.0负载均衡配置软件

    Apache 2.2 和 Tomcat 6.0 的负载均衡配置是提高Web应用程序性能和可扩展性的重要技术。在高流量环境下,通过将工作负载分散到多个Tomcat实例上,可以确保服务的稳定性和响应速度,同时避免单一服务器过载。下面我们...

    两台服务器上做Apache2.2+Tomcat6.0+mod_jk的负载均衡

    "两台服务器上做Apache2.2+Tomcat6.0+mod_jk的负载均衡"是一个典型的分布式系统架构,旨在通过在多台服务器之间分配工作负载来提高系统的稳定性和性能。下面将详细介绍这个配置涉及的知识点: 1. **Apache ...

    Apache2.2 with mod_jk

    总之,"Apache2.2 with mod_jk"是一个用于创建高可用、高性能Web服务环境的配置,涉及到Apache HTTP Server、mod_jk模块和Tomcat集群的联合运用。这样的设置对于处理大量并发请求的大型Web应用程序尤其有益。

Global site tag (gtag.js) - Google Analytics