服务器性能优化(二):apache调优

早过忘川 提交于 2019-12-18 21:05:23

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1) MPM(多处理模块)配置(主要负责管理网络连接,调度请求)

     Apache有3个MPM,分别是: event , prefork和worker。


     event这个MPM是在Apache2.4后才有稳定版,比较适用于大量连续连接的情况。event为不同的任务使用单独的线程池. KeepAlive的好处是,可以同一个tcp连接中响应多个请求,这种方式,可以使一个包含大量图片和html文档的请求加速50%,在Apache配置文件httpd.conf中设置KeepAlive设置为On.


     prefork是一个非线程的MPM。它的特点:不快但很稳定.它能够隔离每个请求,所以如果某个请求出现故障,不会影响其他请求.使用prefork最重要的一个参数是MaxClients。这个MaxClients足够大,这样可以在访问高峰时发挥很好的性能,但是同时又不能太大,致使Apache所需内存超过物理内存。


    worker这个MPM,速度比prefork快很多,由于使用多线程进行访问处理,所以能够处理相对海量的请求,而系统资源的占用要小于基于进程的服务器.work有2个比较重要的参数:ThreadPerChild和MaxClients.ThreadPerChild是用来控制每个子进程允许建立的线程数,MaxClients用来控制允许建立的总线程数.

详细见:http://my.oschina.net/shyl/blog/523070

perfork   MPM 


<IfModule mpm_prefork_module]]>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxRequestWorkers 250

MaxConnectionsPerChild 0 

</IfModule]]>    


StartServers   : 数量的服务器进程的开始

MinSpareServers : 最小数量的服务器进程

MaxSpareServers : 最大数量的服务器进程

MaxRequestWorkers : 最大数量的服务器进程允许开始

MaxConnectionsPerChild: 最大连接数的一个服务器进程服务


worker  MPM 


<IfModule mpm_worker_module>

StartServers 3

MinSpareThreads 75

MaxSpareThreads 250 

ThreadsPerChild 25

MaxRequestWorkers 400

MaxConnectionsPerChild 0 

</IfModule>  


StartServers   : 数量的服务器进程的开始

MinSpareThreads : 最小数量的工作线程

MaxSpareThreads : 最大数量的工作线程

ThreadsPerChild   : 每个服务进程包含的固定数量的工作线程

MaxRequestWorkers : 最大数量的工作线程

MaxConnectionsPerChild: 最大连接数的一个服务器进程服务

 

 event MPM


<IfModule mpm_event_module>

StartServers 3

MinSpareThreads 75

MaxSpareThreads 250

ThreadsPerChild 25

MaxRequestWorkers 400

MaxConnectionsPerChild 0

</IfModule>


StartServers   : 数量的服务器进程的开始

MinSpareThreads : 最小数量的工作线程

MaxSpareThreads : 最大数量的工作线程

ThreadsPerChild   : 每个服务进程包含的固定数量的工作线程

MaxRequestWorkers : 最大数量的工作线程

MaxConnectionsPerChild: 最大连接数的一个服务器进程服务

 

  通过/opt/apache/bin/httpd -l,我们可以看到我们的使用是event MPM 


<IfModule mpm_event_module>

    ServerLimit             10000

    StartServers            8

    MinSpareThreads         75

    MaxSpareThreads        250

    ThreadsPerChild        25

    MaxRequestWorkers       4000

    MaxConnectionsPerChild  2000

</IfModule>


 


2)Apache其他参数优化

   1. ExtendedStatus Off    关闭对每个请求连接的扩展状态信息跟踪.

   2. KeepAlive  On         //使用keepalive可以在单一连接时进行多个请求.

      MaxKeepAliveRequests  0  //最大保持连接数, 0为不限制.

      KeepAliveTimeout      5  //每个连接保持时间

   3. HostnameLookups  Off 

     //尽量较少DNS查询的次数。如果你使用了任何”Allow fromdomain”或”Denyfrom domain”指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次            反向,以确认没有作假)。所以,为了得到最高的性能,应该避免使用这些指令.

   4.使用mod_deflat模块,这个模块可以在用户访问网站时实时将内容进行压缩,然后再传给客户端.所以mod_deflat能极大地加速网站,节约带宽,当然压缩需要花费cpu时间.

LoadModule deflate_module     modules/mod_deflate.so


<ifmodule mod_deflate>

     DeflateCompressionLevel 9

     SetOutputFilter DEFLATE

     #DeflateFilterNote Input instream

     #DeflateFilterNote Output outstream

     #DeflateFilterNote Ratio ratio

     #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate

     #CustomLog logs/deflate_log.log deflate

</ifmodule>


   5.减少Timeout值   Timeout  30

   6. UseCanonicalName   on


    打开UseCanonicalName是Web服务器的标准做法。这是因为客户发送的大部分请求都是对本服务器的引用,打开该项设置就能使用 ServerName和Port选项的设置内容构建完整的URL。如果将这个参数设置为Off,那么Apache将使用从客户请求中获得服务器名字和端口值,重新构建URL。


   7.  取消符号连接   Options FollowSymLinks


FollowSymLinks允许使用符号连接,这将使用浏览器有可能访问文档根目录(DocumentRoot)之外的内容,并且只有符号连接的目的与符号连接本身为同一用户所拥有时(SymLinksOwnerMatch),才允许访问,这个设置将增加一些安全性,但将耗费Apache大量的资源。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!