Apache worker/perfork模式说明及优化配置,workerperfork


考试题一:VI命令考察
到文件结尾:G
到文件开头:gg
到行尾:$
到行首:0
删除光标所在行:dd
复制光标所在行:yy(nyy向下复制n行,p为粘贴)
当前行下一行插入新行:o
开启限时行号: :set nu
直接定位到指定行,如100行:100gg


考试题二:apache有哪两种模式,各自有哪些缺点。
Apache worker/perfork模式说明及优化配置。
#查看当前apache的工作模式。
[root@c601 ~]# /application/apache/bin/httpd -l|grep -E "worker|profork"
  worker.c


prefork模式
prefork使用的事多个子进程,而每个子进程只有一个线程,每个进程在某个确定的
时间内只能维持一个连接。
工作原理:
控制进程最初建立若干个子进程,为了不在请求到来时再生成子进程,所有要根据需求
不断的创建新的子进程,最大可以达到每秒32个直到满足需求为止。
安装方法:
在编译过程中,加入参数--with-mpm=prefork,不加可以,因为默认的话,会采用prefork模式。
prefork模式的优点:
效率高,稳定,安全。对于线程调试困难的平台来说,调试更加容易些。
prefork模式的缺点:
和worker模式比消耗的资源多。


配置参数说明:httpd.conf
<IfModule mpm_prefork_module>
StartServers       5    #最初建立的子进程
MinSpareServers    5    #最小空闲进程数,如果空闲的进程数小于设定值,Apache会自动建立进程。如果服务器并发及负载大的话,可以考虑加大。
MaxSpareServers    10   #最大空闲进程数,如果空闲的进程数大于设定值,Apache会自动kill掉多余的进程。如果服务器并发及负载大的话,可以考虑加大。
MaxClients         150  #最大并发数,设定的是apache可以同时处理的请求,是对apache性能影响最大的参数,就是Apache可以同时处理的请求数。如果150用户在访问,那么第151位用户必须等之前访问结束后才能访问。
MaxRequestsPerChild   0  #每个进程可处理的请求数。每个子进程在处理了“maxrequestsperchild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。
</IfModule>
常用的配置参考:
<IfModule mpm_prefork_module>
StartServers       10    
MinSpareServers    10   
MaxSpareServers    15   
MaxClients         1000  
MaxRequestsPerChild   5000 
</IfModule>




worker模式:
worker模式是Apache2.x新引进的模式,是线程与进程的结合,在worker模式下会有多个子进程,每个子进程又会有多个
线程。每个线程在某个确定的时间只能维持一个连接。
工作原理:
由主控制进程生成若干个子进程,而每个子进程中又包含固定的线程数,各个线程独立处理请求,同样为了不在请求到来时
再生成线程,在配置文件中设置了最小和最大的空闲线程数及所有子进程中的线程总数,如果现有子进程中的线程总数不能
满足并发及负载,控制进程将派生新的子进程。
安装方法:
在配置编译的过程中,加入参数--with-mpm=worker,如果不加的话系统会采用默认prefork模式。
worker模式的优点:
内存占用比prefork模式低,适合高并发高流量HTTP服务。
worker模式的缺点:
假如一个线程崩溃,整个进程就会连同其他任何线程一起“死掉”。由于线程共享内存空间,所以在一个程式在运行时必须被系统识别
为“每个线程都是安全的。”服务稳定性不如prefork模式。
配置说明:
<IfModule mpm_worker_moodule>
StartServers   2      #最初建立的子进程数
MaxClients     150    #所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生出新的子进程。
MinSpareThreads   25  #最小空闲线程数,如果空闲的线程小于设定值,Apache会自动建立线程,如果服务器负载大的话,可以考虑加大此参数。
MaxSpareThreads   75  #最大空闲线程数,如果空闲的线程大于设定值,Apache会自动kill掉多余的线程,如果服务器负载大的话,可以考虑加大此参数值。
ThreadPerChild    25  #每个进程包含固定的线程数,此参数在worker模式中,是影响性能最大的参数。ThreadPerChild的最大缺省值是64,如果负载大的话,64也是不够的,这时要显示的使用threadlimit指令,它的最大缺省值是20000。
MaxRequestPreChild 0  #功能同prefork模式(每个线程处理的最大请求数。。。)
</IfModule>


配置参考:
<IfModule mpm_worker_moodule>
StartServers   3
MaxClients     1000
ServerLimit    25
MinSpareThreads   50
MaxSpareThreads   200
ThreadPerChild    64
MaxRequestPreChild 0
</IfModule>


worker模式下所能同时处理的请求总数是由子进程总数乘以Threadsperchild值决定的,应该大于等于maxclients。
默认最大的子进程总数是16,如果需要加大时也需要显示的声明serverlimit值。(最大值是20000)


特别说明:
如果显示声明了ServerLimit,那么它乘以ThreadPerChild的值必须大于等于MaxClients。且MaxClients必须是ThreadsPeChild的整数倍,
否则Apache将会自动调节一个相应值。


配置文件:httpd.conf
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
配置文件:extra/httpd-mpm.conf
#默认配置如下,可更改。
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>


题三:如何查看apache当前的进程数。
worker模式:
[root@c601 conf]# ps -ef |grep httpd|wc -l
7


prefork模式:
[root@c601 conf]# pstree -a|grep http|wc -l
111


题四:生产环境中常见的HTTP状态码列表(List of HTTP status codes)为:
200
301
403
404
500
502
503
504
转载:http://blog.csdn.net/wangyunpeng0319/article/details/74156839
PS:使用crul -I 来获得状态码:
[root@c601 conf]# curl -I baidu.com
HTTP/1.1 200 OK
Date: Sat, 03 Feb 2018 06:59:05 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-47cf7e6ee8400"
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Sun, 04 Feb 2018 06:59:05 GMT
Connection: Keep-Alive
Content-Type: text/htm




题五:你认为apache服务Forbidden403问题有哪几种情况?
4-5种情况。
1.在主配置文件httpd.conf中没有加入站点目录许可。
2.没有首页文件,目录许又禁止目录浏览。
3.站点目录没有设置apache访问的权限。
4.已经做了授权许可,但是许可没有设置合适的权限。allow from all。


题六:当执行uptime后,结尾load average内容,请解释最后3个数字的含义。
[root@c601 conf]# uptime
 21:33:11 up  8:54,  1 user,  load average: 0.00, 0.00, 0.00
第一列5分钟的负载,第二列是10分钟的负载,第三列是15分钟的负载。

相关内容

    暂无相关文章