Web服务器的提供方式介绍!

web服务器


        许多长期接触互联网电脑的小伙伴对Web服务器的了解非常简单。让我们来谈谈Web服务器提供服务的方式。


        Web服务器必须使用某种方式来支持这种多任务服务,因为它希望同时为多个客户端提供服务。一般有三种方式可供选择,多进程模式、多线程模式和异步模式。其中,在多进程模式下,服务器使用一个进程向客户端提供服务。因为在操作系统中,生成一个进程需要额外的开销,比如进程内存复制,所以当有很多客户端时,性能会降低。要克服此生成过程的开销,可以使用多线程或异步方法。在多线程方法中,在一个进程中使用多个线程来提供服务可以提高性能,因为线程的开销较小。事实上,非开销方式仍然是异步的,它使用非阻塞方式与每个客户机通信,服务器使用进程进行轮询。


        虽然异步方法是最有效的方法,但它也有自己的缺点。因为在异步模式下,多个任务之间的调度是由服务器程序自己完成的,一旦一个地方出现问题,整个服务器都会出现问题。所以要给这个服务器增加功能,一方面要符合服务器本身特定的任务调度模式,另一方面要保证代码没有错误,限制了服务器的功能,使得异步Web服务器效率最高,但是功能简单,比如Nginx server。


        因为多线程方法使用线程进行任务调度,所以服务器开发更简单,并且通过遵守标准来促进协作。但是多个线程在同一个进程中,可以访问同一个内存空间,所以线程之间存在影响,必须保证请求的内存被请求和释放。对于服务器系统来说,由于要连续运行几天、几个月甚至几年,一点点错误就会逐渐累积,最终影响服务器的正常运行,因此很难编写出高稳定性的多线程服务器程序。但是,做不到的时候就不是了。Apache的worker模块可以很好地支持多线程。


        多进程方法的优点是稳定性,因为当一个进程退出时,操作系统会回收它所占用的资源,不会留下任何垃圾。即使程序中出现错误,因为进程是相互隔离的,所以错误不会累积,而是会在进程退出时被清除。Apache的prefork模块支持多个进程。

会员中心