Apache的工作模式
Apache HTTP服务器被设计为一个强大的,灵活的,能够在多种平台以及不同环境下工作的服务器。这种模块化的设计叫做“多进程处理模块”(multi-processing module MPM),也叫做工作模式
= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =
prefork模式(一个非线程模式)
其主要工作方式是:当Apache服务器启动之后,mpm_prefork模块会预先创建多个子进程(默认五个),每一个子进程只有一个线程,当接收到客户端的请求之后,mpm_prefork模块再将请求交给子进程处理,并且每一个子进程同时只能用于处理单个请求如果当前的请求数将超过预先创建的子进程数时,mpm_prefork模块就会创建新的子进程来处理额外的请求。Apache总是会试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求。这样客户端的请求就不需要在接收后等候子进程的产生
由于在mpm_prefork模块中,每个请求对应一个线程,因此其占用资源相对其他两种模块而言较多。不过mpm_prefork模块的优点在于它的每个子进程都会处理对应的单个请求,所以就算其中一个请求出现问题也不会影响到其他请求。prefork在效率上要比worker要高,但是内存使用也大的多,不擅长处理高并发场景
= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =
worker模式(多线程模式)
和prefork模式相比,worker使用了多进程和多线程的混合模式,worker模式同样也会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程更轻量,因为线程是通过共享父进程的内存空间,因此内存的占用会少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些;另外,如果一个线程出现了问题也会导致统一进程下的线程出现问题,如果是多个线程出问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,就需要考虑到线程的安全了,在使用keep-alive长连接的时候,某一个线程会被一直占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)
总的来说,prefork模式速度要稍高于worker,然鹅它需要的cpu和memory资源也稍多于worker
= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =
event模式
这是一个较新的工作模式,是worker模式的变种,它把服务进程从连接中分离出来,与worker模式不同的是它解决了keep-alive长连接的时候占用线程资源被浪费的问题,在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。event模式不能很好地支持https的访问(HTTP认证相关的问题)
= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =
Apache配置参数
1)KeepAlive on/off
keepalive指的是保持活跃连接,如果把keepalive设置为on,那么来自统一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而增加服务器的负担
=-=
2)KeepAliveTimeOut number
如果第二次请求和第一次之间超过keepalivetimeout的时间的话,第一次连接会中断,再建立第二个连接
=-=
3)MaxKeepAliveRequsts 100
一次连接可以进行的HTTP请求的最大请求次数。将其值设置为0将支持在一次连接内进行无限次数的传输请求,客户端通常达不到这个上限就完成连接了
=-=
4)HostnameLookups on | off | double
如果是on,那么只有进行一次反查,如果是double,那么进行反查之后还要进行一次正向解析,只有两次结果符合才行,而off就是不进行域名验证
=-=
5)timeout 5
推荐设置为5 这个是Apache接受请求或者发出相应的时间超过这个时间断开
= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =