基于Apache和Tomcat的系统性能初步优化

o
 
  服务器CPU和内存等资源还比较空余,用户量大时网页访问却很慢?这可能是Apache或者Tomcat的相关参数没有进行优化的原因。将Apache和Tomcat的相关参数调整为和服务器硬件配置相匹配,可显著改善性能。下面所述性能调优,适合两者的单独使用的情况,也适合组合使用的情况。
  除了调整相关参数外,架构的优化也是需要考虑的。
  一、Apache的性能参数调整
  1、Apache涉及性能调整的模块为:MPM,配置文件为:extra\httpd-mpm.conf
  2、MPM模块有三种工作模式:profork、worker、event。
  profork模式使用相互独立的进程处理用户的请求,不涉及线程。成熟稳定性,但对系统资源消耗较高。
  worker模式进程和线程结合,性能较高,对系统资源相对消耗较少。
  event为woker模式的改进,理论上性能最优,以后有机会对这一尚处于试验状态的模式使用一下。
  可使用httpd –l查看当前使用的模式。
  可使用ps -ef|grep httpd|wc –l查看当前系统中Apache进程数。
  后面对目前正在使用的profork模式进行记录备注。
  3prefork 模式相关参数
# prefork MPM
# StartServers:每次创建新进程时一次性启动的进程数。
# MinSpareServers: 最小空闲进程数。服务器总是保持不少于这个数的进程存在。
# MaxSpareServers: 最大空闲进程数。空闲进程数超过这个数字,服务器就会结束一些进程,保持空闲进程数少于这个数。
# ServerLimit:设置服务器允许的最大硬进程数。
# MaxClients: 最大进程数。这个数必须<= ServerLimit。(可以理解为同一时间允许连接的最大用户数)。
# MaxRequestsPerChild: 限制每个进程能够处理的最大请求数。超过这个数,进程就自动结束。如果为0,则进程不会自动结束(可能会导致内存泄漏)。
 
<IfModule mpm_prefork_module>
    StartServers          20
    MinSpareServers       50
    MaxSpareServers      100
    ServerLimit         2000
    MaxClients          2000
    MaxRequestsPerChild   10000
</IfModule>
 
  二、Tomcat的性能参数调整
  1Tomcat的两种连接器,分别用于处理HTTP/1.1协议与AJP/1.3协议。协议分别有三种实现方式,分别为:JIOAPRNIO。在server.xml文件中,连接器的配置protocol参数如果指明了“HTTP/1.1”或者“AJP/1.3”,则会使用APRAPR性能相对JIONIO更好一些。也可以直接指定protocol为具体的JIOAPR或者NIO,但没必要。HTTP/1.1协议用于响应用户通过浏览器的操作,AJP/1.3则用于和Apache或者IIS等通讯。
  2Executor元素,用于配置可供连接器使用的共享线程池,可用于节约硬件资源。这个元素的配置在server.xml中位置必须放在连接器的配置之前,否则不会起作用,配置了线程池之后,连接器不需要再单独配置maxThreads等参数。因此,影响tomcat连接性能的总要参数,主要就在Executor的配置中,将。
  3、元素Executor和连接器Connector的参数:maxThreadsminSpareThreads进行适当调整即可。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="1000"
        minSpareThreads="300"
        maxQueueSize="100"
        prestartminSpareThreads="true" 
        URIEncoding="UTF-8"/>
                  
 <Connector executor="tomcatThreadPool"
        port="10047"
        connectionTimeout="20000" 
        acceptCount="800"
        redirectPort="8443"
        protocol="org.apache.coyote.http11.Http11NioProtocol" URIEncoding="UTF-8"/>
 
<Connector port="10053" protocol="AJP/1.3"
        redirectPort="8493"
        executor="tomcatThreadPool"
        acceptCount="800"
        connectionTimeout="20000"  
        URIEncoding="UTF-8"/>
 
  三、其他
  1、服务器集群架构。要进一步提升系统整体性能,增加允许同时在线用户数,可以考虑使用Apache+Tomcat的集群架构。这需要配置apache的负载分配器相关参数和Tomcatsession复制相关的参数配置。

  2、数据库优化。做好针对查询的索引优化。必要时考虑缓冲策略。

  完成以上优化设置,网站性能将能得到大幅提升。


(点击率:2455)

评论

昵称

 聚享站 | 培训学校管理系统 | 惊觉社区 | 杭州同城分类信息 | 
这视界--www.deepvast.com这视界

浙ICP备17017888号