看到一篇这样的文章,觉得有积分道理 可是我的win2000系统上IIS跟apache比速度差多了
Apache 基于 Pre-forking 服务器模型。这种模型原本是Unix的产物,
算的上是Unix的标准了!
但是Windows不同,windows中根本就没有fork这个概念。Apache通过
创建备用服务器进程的方法,来防止Apache的主进程崩溃后,整个Apache
服务器瘫痪!
有什么不同呢?在Unix下,Apache主进程fork出子进程,并由子进程来
处理各种事务!但是主进程的任务确异常简单,明确!这样即使子进程
崩溃也不会产生什么严重的后果,主进程会立刻创建另外一个子进程来接替。
由于主进程的任务很简单,不容易崩溃,所以Apache在Unix下拥有着
绝好的稳定性!
Windows下就不一样呢!Windows并不fork子进程,而是使用线程,被称为
多线程系统。线程又与进程不同,它是在服务器进程空间内执行的一段
代码,独立完成一项任务!
明确两个概念:
服务器进程又叫做"主线程"。其他线程称为"工作线程"。
由于不能fork子进程,Apache必须以单一的服务器进程(主线程)来运行!
必须产生线程(不是子进程,是工作线程)去服务请求,完成事务!
这中间只要有一个线程出问题,整个Apache进程都会game over!
所以,就想我前面说的那样,apache为了避免这种情况的产生,就创建
一个后备的进程!当主进程不堪重负,或者意外崩溃时,后备进程启动接替工作,并创建另外一个后备进程!
说了这么多,只是让你明白在Windows的操作系统中,Apache还是不完善的
至少在Windows下,其性能无法和IIS相比。
想想吧,Windows与IIS都是MS的产品,他们的结合自然要比Windows
加上一个从Unix中移植过来的软件的结合要强健的多!