Apache和Nginx的服务器模型对比分析
2018-06-29 本文已影响36人
阿休
Apache是多进程/多线程模型,它在启动的时候会启动一大批进程作为进程池,当用户请求到来的时候,从进程池中分配处理进程给具体的用户请求,这样可以节省多进程/线程的创建和销毁开销,但是如果同时有大量的请求过来的时候,需要消耗比较高的进程/线程切换。而Nginx则是采用epoll技术,这种非阻塞的做法,可以让一个进程同时处理大量的并发请求,而无需反复切换。对于大量的用户访问场景下,apache会存在大量的进程,而nginx则可以仅用有限的进程(比如按CPU核心数来启动),这样就会比apache节省了不少“进程切换”的消耗,所以其并发性能会更好。
Nginx的固定多进程,一个进程异步处理多个客户端 Apache的多态多进程,一个进程处理一个客户在现代服务器端软件中,nginx这种模型的运维管理会更简单,性能消耗也会稍微更小一点,所以成为最流行的进程架构。但是这种好处,也会付出一些另外的代价:非阻塞代码在编程的复杂度变大。