设为首页 收藏本站
查看: 568|回复: 0

[经验分享] linux 网站架设调优Apache(三)

[复制链接]

尚未签到

发表于 2018-11-20 08:18:36 | 显示全部楼层 |阅读模式
  扩展:expires模块的语法
  上面已经的操作就是实现apache的缓存功能。其中,expires后面的参数你也可以根据需求自行更改,缓存时间也是一样可以更改的。
  这里我对expires的模块语法进行一些细说
  expires模块用到了ExpiresDefault和EXpiresByType两个指令,下面是这两个指令的语法。
  ExpiresDefault “<base> [plus] {<num><type>}*”
  EXpiresByType type/encoding " [plus] {}"
  其中的参数有3个:access,now(等价于‘access’),modification
  plus关键字是可选的。
  必须是整数,确保可以atoi()所接收。(atoi可以把字符串转换成长整型数)
  参数类型:years,months,weeks,days,hours,minutes,seconds
  下面用几个例子带大家理解下
  例如:下面3个指令都表示文档默认的有效期是一个月
  ExpiresDefault "access plus 1 month"
  ExpiresDefault "access plus 4 weeks"
  ExpiresDefault "access plus 30 days"
  有效期可以通过增加“”子句进一步调整
  ExpiresByType text/html "access plus 1 month 15 days 2 hours"
  ExpiresByType image/gif "modification plus 5 hours 3 minutes"
  注意:如果你使用基于最后修改日期的设置,“Expires”头将不会被添加到那些并非来自于硬盘文件的内容,这是因为这些内容并不存在“最后修改时间”的属性。
  基准时刻可以是源文件的最后修改时刻或者客户端对源文件的访问时刻,至于使用那一个则由指定。“M”表示源文件的最后修改时刻,“A”表示客户端对源文件的访问时刻,需要注意的是和seconds之间没有空格。
  这两个基准的差别是很微妙的。如果使用“M”,所有当前缓存中的文档副本都将在同一时刻过期,这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处。如果使用“A”,则每个客户端所得到的有效期是不一样的,这个可能对那些几乎不更新的图片很有好处,特别是对于一组都引用相同图片的相关文档。
  缓存优化对企业来说是至关重要了的,不同的公司类型,缓存的类型和时间又各不相同,大家具体可以用YSlow对淘宝,京东,新浪,谷歌等站点进行测试,看看他们的缓存时间是多少,并思考下为什么那样设置。
  虽然缓存的设置有如下优点
  1.缩短服务的响应时间
  2.减轻服务器负担
  3.减少网络带宽使用量,降低企业成本
  但是他的缺点也是显而易见的,由于使用了缓存设置,导致被缓存的内容更新了,但是客户看到的却还是旧的。
  如何解决被缓存文件及时更新这个问题呢?
  1.
  第一种:缩短缓存时间例如:1天,不彻底牺牲性能
  2.
  第二种:对缓存的对象改名。
  九、启用worker模式,提升并发数(可以达到2000-5000)
  apache有两个模式,默认的模式是prefork模式。那么我们为什么要使用worker模式呢?这两种模式又有什么区别呢?
  1、prefork模式
  prefork使用的是多个子进程,而每个子进程只有一个线程,每个进程在某个确定的时间只能维持一个连接。
  工作原理:控制进程最初建立若干个子进程,为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个直到满足需求为止。
  安装方法:在编译的过程中,加入参数--with-mpm=frefork,不加也可以,因为默认的话,会采用prefork模式。
  优点:效率高,稳定,安全。对于线程调试困难的平台来说,调试更加容易些。
  缺点:与worker模式相比消耗资源多。
  配置参数说明:
  </IFModule mpm_prefork_module>
  StartServers               5     #最初建立的子进程
  MinSpareServers       5      #最小空闲进程数,如果空闲的进程小于设定值,Apache会自动建立进程,如果服务器并发及负载大的话,可以考虑加大。
  MaxSpareServers      10    #最大空闲进程数,如果空闲的进程大于设定值,Apache会自动kill掉多余的进程,如果服务器负载大的话,可以考虑加大。
  MaxClients                150     #设定的是apache可以同时处理的请求,是对apache性能影响最大的参数,就是apache可以同时处理的请求数,就是说,如果有150个用户在访问,那么第151个用户就要等之前的访问结束后才能访问。
  MaxRequestsPerChild    0    #每个子进程可处理的请求数,每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0以为着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设置成非0值也有两点重要的好处。(1)可防止意外的内存泄露(2)在服务器负载下载的时候会自动减少子进程数。
  </IFModule>
  生产环境配置实例1:
  
  StartServers               10
  MinSpareServers            10
  MaxSpareServers            15
  ServerLimit                2000
  MaxClients                 1000
  MaxRequestsPerChild        5000
  ;
  2、worker模式
  worker模式是apche2.x新引进来的模式,是线程与进程的结合,在worker模式下会有多个子进程,每个子进程又会有多个线程。每个线程在某个确定的时间只能维持一个连接。
  工作原理:由主控制进程生成若干个子进程,而每个子进程中又包含固定的线程数,各个线程独立处理请求,同样为了不在请求到来时再生成线程,在配置文件中设置了最小和最大的空闲线程数及所有子进程中的线程总数,如果现有子进程中的线程总数不能满足并发及负载,控制进程将派生新的子进程。
  安装方法:在配置编译的工程中,加入参数--with-mpm=worker,如果不加的话系统会采用默认prefork模式。
  优点:内存占用比prefork模式低,适合高并发高流量HTTP服务。
  缺点:假如一个线程崩溃,整个进程就会连同其任何线程一起“死掉”。由于线程共享内存空间,所以一个程式在运行时必须被系统识别为“每个线程都是安全的”。服务稳定性不如prefork模式。
  配置参数说明:
  
  StartServers                    2  #最初建立的子进程
  MaxClients                     150   #所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
  MinSpareThreads           25    #最小空闲线程数,如果空闲的线程小于设定值,apache会自动建立线程,如果服务器负载大的话,可以考虑加大此参考值。
  MaxSpareThreads            75    #最大空闲线程数,如果空闲的线程大于设定值,apache会自动kill掉多余的线程,如果服务器负载大的话,可以考虑加大此参考值。
  ThreadsPerChild               25    #每个进程包含固定的线程数,此参数在worker模式中,是影响最大的参数,ThreadsPerChild的最大缺省值是64,如果负载较大,64是不够的。这时要显式使用threadlimit指令,它的最大缺省值是20000.
  MaxRequestsPerChild    0    #功能同prefork模式
  
  常用配置参考:
  生产环境配置实例1:
  
  StartServers             3
  MaxClients               2000
  ServerLimit              25
  MinSpareThreads          50
  MaxSpareThreads          200
  ThreadLimit              200
  ThreadsPerChild          100
  MaxRequestsPerChild      0
  
  生产环境配置实例2:
  
  StartServers              5
  MaxClients                9600
  ServerLimit               64
  MinSpareThreads           25
  MaxSpareThreads           500
  ThreadLimit               200
  ThreadsPerChild           150
  MaxRequestsPerChild       0
  
  生产场景配置实例3:
  
  StartServers               2
  MaxClients                 500
  ServerLimit                25
  MinSpareThreads            25
  MaxSpareThreads            75
  ThreadsPerChild            25
  MaxRequestsPerChild        0
  
  生产场景配置实例4:
  
  StartServers              3
  MaxClients                1600
  ServerLimit               25
  MinSpareThreads           50
  MaxSpareThreads           200
  ThreadLimit               200
  ThreadsPerChild           64
  
  worker模式下所能同时处理的请求总数是由子进程总数乘以Threadsperchild值决定的,应该大于等于maxclients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,如需加大时也需要显示声明serverlimit的值(最大值是20000)
  特别说明:如果显示声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则apache将会自动调节到一个相应值(可能是个非期望值)。
  数学表达:
  1.
  MaxClient<=总的进程数(ServerLimit)x线程数(ThreadsPerChild)
  2.
  MaxClient%ThreadsPerChild=0
  生产环境中我们需要开启httpd-mpm.conf配置行,这样才能实现并发链接数的增加。
  1、开启httpd-mpm.conf配置行
  这里我们要apache的主配置文件httpd.conf,找到包含httpd-mpm.conf的行,并解开注释
  1.
  [root@c64-web /]# grep "httpd-mpm.conf" /usr/local/apache/conf/httpd.conf
  2.
  #Include conf/extra/httpd-mpm.conf
  3.
  [root@c64-web /]# sed -i 's#\#Include conf/extra/httpd-mpm.conf#Include conf/extra/httpd-mpm.conf#g' /usr/local/apache/conf/httpd.conf
  注意:编译安装的,只有此行解开注释了,后面的修改才能生效。
  2、修改httpd-mpm.conf配置
  1)如果你的apache服务为worker模式,那么生产环境中可以选择上面worker模式的生产环境配置实例1的配置。
  2)如果你的apache服务为prefork模式,那么生产环境中可以参考上面prefork模式的生产环境配置实例1的配置。
  生产环境中,这里我建议大家选择worker模式。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637152-1-1.html 上篇帖子: linux 网站架设调优Apache(二) 下篇帖子: linux 网站架设调优Apache(四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表