参考:

http://zyan.cc/nginx_php_v6/

nginx相对于apache的优点: 
1.轻量级,同样的web 服务,比apache服务器占用更少的内存及资源 
2.抗并发,nginx在处理请求是异步非阻塞的(epoll),而apache 则是阻塞型的(select),在高并发下nginx 能保持低资源低消耗高性能 
3.高度模块化的设计,编写模块相对简单

4.apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

apache 相对于nginx 的优点: 
1.nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向

2.Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用

-----------------------------------------------------------

不管是Nginx还是Squid这种反向代理,其网络模式都是事件驱动。事件驱动其实是很老的技术,早期的select、poll都是如此。后来基于内核通知的更高级事件机制出现,如libevent里的epoll,使事件驱动性能得以提高。事件驱动的本质还是IO事件,应用程序在多个IO句柄间快速切换,实现所谓的异步IO。事件驱动服务器,最适合做的就是这种IO密集型工作,如反向代理,它在客户端与WEB服务器之间起一个数据中转作用,纯粹是IO操作,自身并不涉及到复杂计算。反向代理用事件驱动来做,显然更好,一个工作进程就可以run了,没有进程、线程管理的开销,CPU、内存消耗都小。

Nginx处理静态文件效果也很好,那是因为静态文件本身也是磁盘IO操作,处理过程一样.

Apache或者Resin这类应用服务器,之所以称他们为应用服务器,是因为他们真的要跑具体的业务应用,如科学计算、图形图像、数据库读写等。它们很可能是CPU密集型的服务,事件驱动并不合适。例如一个计算耗时2秒,那么这2秒就是完全阻塞的,什么event都没用。想想MySQL如果改成事件驱动会怎么样,一个大型的join或sort就会阻塞住所有客户端。这个时候多进程或线程就体现出优势,每个进程各干各的事,互不阻塞和干扰。当然,现代CPU越来越快,单个计算阻塞的时间可能很小,但只要有阻塞,事件编程就毫无优势。所以进程、线程这类技术,并不会消失,而是与事件机制相辅相成,长期存在。

总结之,事件驱动适合于IO密集型服务,多进程或线程适合于CPU密集型服务,它们各有各的优势,并不存在谁取代谁的倾向

最新文章

  1. 怎么让网站在本地支持SSL?
  2. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现
  3. 厚积薄发,拥抱 .NET 2016
  4. ionic 安装本地插件极光推送
  5. session.flush加锁测试.
  6. 部署ghost博客
  7. CentOS6.5(带图形安装)在使用过程中遇到的一些网络问题迷惑
  8. 安装PHP过程中,make步骤报错:(集合网络上各种解决方法)
  9. DataGrid横向滚动条无法拖动的问题
  10. git工作区和暂存区
  11. WSGI详解
  12. 1213 How Many Tables 简单的并查集问题
  13. python正则实现简单计算器
  14. 移动终端设备ID
  15. Maven提示找不到dependency依赖包
  16. 【转】 SQL - 生成指定范围内的随机数
  17. 【转】Linux中的EAGAIN含义
  18. 由time.tzname返回值引发的对str、bytes转换时编码问题实践
  19. linux之cut用法--转载
  20. 2018.08.28 洛谷P4556 [Vani有约会]雨天的尾巴(树上差分+线段树合并)

热门文章

  1. rabbitmq在storm中使用
  2. Farseer.net轻量级ORM开源框架 V1.5版本升级消息
  3. Int 1的实现过程 (一)
  4. swift VTables
  5. Jmeter之断言——检查点
  6. mysql中对order by的函数substring_index() , find_in_set()使用
  7. chmod - 改变文件的访问权限
  8. 循环冗余校验(CRC)算法入门
  9. April Fools Day Contest 2019: editorial回顾补题
  10. vc中无符号字符数组保存的内存值转换为无符号整数保存