[拇指飞动]构建高性能Web站点(1)

《构建高性能Web站点》中提到了Aphache, Nginx和lighthttpd。 把我的笔记share一下.

 一般来讲Apache主要是基于多进程模型,早期的fork模式会为每一个request来fork一个新的进程;之后的prefork模式则会创建一个进程池,每个Request由一个子进程来处理,但是每个进程可以支持多个request,但是当MaxRequestsPerChild==1时,就相当于传统的fork模式了。

而Nginx为单进程多线程模型,相对于Apache,消耗内存小,也更为轻量级。

基于多进程模式的Apache,内存消耗更大,对于大并发是一个劣势,但是从稳定性来说更佳,任何一个子进程的奔溃都不会影响到Apache本身。通常对于静态文件服务器,站长们似乎都推荐使用Nginx。

当然,Apache其实也提供了Worker模式,允许一个进程中通过多线程来处理多个链接,与Nginx的工作方式相似。但正如作者在书中说的,Apache的worker模式是比较尴尬,使用者比较少,通常人们都会直接投奔其他轻量级的Web Server,如Nginx。

# References

[构建高性能Web站点](http://book.douban.com/subject/3924175)

[Web server调研分析 ]( http://stblog.baidu-tech.com/?p=755)

[Apache Prefork、Worker和Event三种MPM分析]( http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html)

原文地址:https://www.cnblogs.com/piaoger/p/3193838.html