`

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.17_tomcat6集群

    apache2.2+tomcat6集群已经配置好,tomcat优化过,在实际项目发布中直接将项目复制到集群中的所有tomcat的webapps中即可, 此配置中包含是3个tomcat集群, 安装步骤大概如下: 1:安装httpd-2.2.17-win32-x86-no_ssl...

    Apache+Tomcat集群、优化配置

    1 文档目的 4 2 读者对象 4 3 网络拓扑图 4 4 具体步骤 4 4.1 需要事先下载的文件 4 4.2 安装 4 4.2.1 安装jdk、Tomcat 4 4.2.2 安装Apache 4 4.2.2.1 上传文件 4 4.2.2.2 安装Apache 4 ...4.4.2 优化Tomcat 7

    WAMP5-v1.7.4(包括apache_2.2)实现集群

    WAMP5-v1.7.4(集成了apache_2.2+php+tomcat)轻松实现实现集群。有什么不对或优化的地方,敬请指教。

    tomcat6、7、8、9, maven3.5

    的Apache Tomcat 7.x的建立在Tomcat中6.0.x的改进和实现的Servlet 3.0, JSP 2.2,EL 2.2和 WebSocket的1.1规格。除此之外,它还包括以下改进: Web应用程序内存泄漏检测和预防 提高了Manager和Host Manager应用...

    WATMServer v2.6.zip

    WATMServer2.6 纯净版,不含任何软件Jar包(升级时需要留意,做好原环境Jar包及配置文件的备份),主要对配置文件及环境安全方面进行了优化处理,所集成各应用服务 版本分别为:Apache2.2、JDK1.6、Tomcat6.0.20、...

    java论坛一键搭建Easyjsprun! v6.0.1 UFT-8 For windows 110530.zip

    使用记事本等编辑器打开X:安装路径Apache2.2confhttpd.conf文件; 找到 Listen 80,将 80 改为你希望的端口号,保存文件; 运行“启动 EasyJspRun! ”即可。 Q:其他人可以访问我的论坛吗? A:可以,您可以让...

    java论坛一键搭建Easyjsprun! v6.0.1 GBK For windows 110530.zip

    使用记事本等编辑器打开X:安装路径Apache2.2confhttpd.conf文件; 找到 Listen 80,将 80 改为你希望的端口号,保存文件; 运行“启动 EasyJspRun! ”即可。 Q:其他人可以访问我的论坛吗? A:可以,您可以让...

    实战Nginx:取代Apache的高性能Web服务器 第一章

    2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 ...

    实战Nginx.取代Apache的高性能Web服务器

    2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例...

    WAPM综合网络服务器系统v2.0.3 正式版本 [绿色的]

    Apache2,是互联网最最最流行的WEB服务软件,用以提供基本的WEB服务功能,同时支持SSL,GZIP,LIC(IP同时连接数限制)功能; PHP4,PHP5,是互联网最最最流行的动态网页语言,用以提供PHP语言的网络应用程序开发,...

    低清版 大型门户网站是这样炼成的.pdf

    1.2.5 支持集群功能的web服务器tomcat 21 1.2.6 开源数据库服务器之骄子mysql 23 1.2.7 功能强大的flv流媒体服务器red5 24 1.3 门户网站开发指导思想 26 1.4 ssh 2组合框架—门户网站开发之首选 28 1.4.1 mvc...

    实战nginx-张宴

    2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、 停止、 平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进阶篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 ...

    Java虚拟机

    1.4.6 Apache Harmony Google Android Dalvik VM 1.4.7 Microsoft JVM及其他 1.5 展望Java技术的未来 1.5.1 模块化 1.5.2 混合语言 1.5.3 多核并行 1.5.4 进一步丰富语法 1.5.5 64位虚拟机 1.6 实战:自己...

    centos7.5分布式平台搭建.docx

    2.2. 复制文件 13 2.3. 注册现有虚拟机 14 2.4. 为克隆的虚拟机添加硬盘 15 3. HPE服务器Centos7.5安装 16 3.1. 服务器(DL388 Gen10)加载镜像文件 16 3.2. 系统安装、配置 18 3.2.1. 选中【install centos7】 18 ...

    Activiti6.0教程例子下载

    7. HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。 现在至少要知道有这些对象...

    jpivot学习总结.doc

    uniqueMembers 该属性用于优化产生的 SQL ,如果你知道这个级别和其父级别交叉后的值或者是维度表中给定的级别所有的值是唯一的,那么就可以设置该值为 true ,否则为 false 。 levelType 该 Level 的类型,默认...

Global site tag (gtag.js) - Google Analytics