技术开发 频道

Apache HTTP Server和Tomcat的性能优化

  【IT168 技术】最近在公司实习,研究了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捕捉。

0
相关文章