您的位置:首页 > 理论基础 > 计算机网络

httpd性能调整及服务器安全

2017-11-22 23:17 260 查看
MPM:多路处理模块

分为三种模式:
1,prefork

Prefork MPM实现了一个非线程、预派生的工作模式。它在Apache启动之初,就会预派生一些子进程,然后等待连接。可以减少频繁创建和销毁进程的开销,每个子进程只有一个线程。它成熟稳定,可以兼容新老模块,也不需要担心线程安全问题。但是一个进程相对地占用更多的资源,消耗大量内存,不擅长处理高并发的场景。

进程模型,每个进程处理一个请求,模式:父进程—>多个子进程—>一个子进程处理一个请求



2,worker

与Prefork工作模式相比,worker使用了多进程和多线程的混合模式,worker模式也同样会预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比进程更加轻量级,因为线程通常会共享父进程的内存地址的,因此内存占用会减少一些。

同时如果一个线程异常挂了,会导致父进程和它的其他正常子线程都挂了,这样也只会影响Apache的一部分,而不是整个服务。

缺点使必须考虑线程安全性,因为多个子进程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,某个线程会被一直占据,也许中间没有任何请求,需要等到超时才会被释放。如果过多的线程被这样占据,也会导致在高并发下的无服务线程可用。

线程模型,每个进程衍生出多个线程,每个线程处理一个请求,模式:父进程—>多个子进程—>每个子进程衍生多个线程—>一个线程处理一个请求任务



3,event

和worker工作模式很像,最大的区别是解决了在keep-alive场景下,长期被占用的线程的资源浪费问题,在event MPM中,会有一个专门的线程来管理这些keep-alive线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放,这样增强了在高并发场景下的请求处理能力。

事件驱动模型,一个进程处理多个任务,模式:父进程—>多个子进程—>一个子进程处理多个请求



httpd-2.2 MPM设置

修改文件 vim /etc/sysconfig/httpd

HTTPD=/usr/sbin/httpd.worker

HTTPD=/usr/sbin/httpd.event

默认为prefork模式

配置后重启httpd server生效

centos7 httpd-2.4 MPM设置

修改文件vim  /etc/httpd/conf.modules.d/00-mpm.conf

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

LoadModule mpm_worker_module modules/mod_mpm_worker.so

LoadModule mpm_event_module modules/mod_mpm_event.so
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: