微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux网站架构系列之apache----调优篇

Linux网站架构系列之apache----调优篇

时间:10-08 来源:互联网 点击:

有如下优点

1.缩短服务的响应时间

2.减轻服务器负担

3.减少网络带宽使用量,降低企业成本

但是他的缺点也是显而易见的,由于使用了缓存设置,导致被缓存的内容更新了,但是客户看到的却还是旧的。

如何解决被缓存文件及时更新这个问题呢?

第一种:缩短缓存时间例如:1天,不彻底牺牲性能

第二种:对缓存的对象改名。

九、启用worker模式,提升并发数(可以达到2000-5000)

apache有两个模式,默认的模式是prefork模式。那么我们为什么要使用worker模式呢?这两种模式又有什么区别呢?

1、prefork模式

prefork使用的是多个子进程,而每个子进程只有一个线程,每个进程在某个确定的时间只能维持一个连接。

工作原理:控制进程最初建立若干个子进程,为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个直到满足需求为止。

安装方法:在编译的过程中,加入参数--with-mpm=frefork,不加也可以,因为默认的话,会采用prefork模式。

优点:效率高,稳定,安全。对于线程调试困难的平台来说,调试更加容易些。

缺点:与worker模式相比消耗资源多。

配置参数说明:

StartServers 5 #最初建立的子进程

MinSpareServers 5 #最小空闲进程数,如果空闲的进程小于设定值,Apache会自动建立进程,如果服务器并发及负载大的话,可以考虑加大。

MaxSpareServers 10 #最大空闲进程数,如果空闲的进程大于设定值,Apache会自动kill掉多余的进程,如果服务器负载大的话,可以考虑加大。

MaxClients 150 #设定的是apache可以同时处理的请求,是对apache性能影响最大的参数,就是apache可以同时处理的请求数,就是说,如果有150个用户在访问,那么第151个用户就要等之前的访问结束后才能访问。

MaxRequestsPerChild 0 #每个子进程可处理的请求数,每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0以为着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设置成非0值也有两点重要的好处。(1)可防止意外的内存泄露(2)在服务器负载下载的时候会自动减少子进程数。

生产环境配置实例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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top