一、多进程
多进程方式是指,服务器在接收到一个客户端请求时,就由服务器主进程生成一个子进程出来和该客户端进行交互,直到连接断开,该子进程就结束了。
优点:设计和实现相对简单,各个子进程之间相互独立,处理客户端的请求彼此不会受到干扰,并且当一个子进程产生问题时,不容易将影响蔓延到其他进程中,这保证了提供服务的稳定性。
当子进程退出时,其占用的资源会被操作系统回收,也不会留下任何垃圾。
缺点:操作系统生成一个子进程需要进行内存复制等操作,彼此进程内存独立,在资源和时间上会产生额外开销,因此如果web服务器接收大量并发请求,就会对系统资源造成压力,导致系统性能。
二、多线程
服务器每收到一个客户端时,会由一个服务器的主进程派生一个线程出来和该客户端交互。
优点:由于操作系统产生一个线程的开销远小于产生一个进程的开销,所以多线程在很大程度上减轻了web服务器对系统资源的要求。
开发方面遵循一定的标准,这相对来说比较规范和有利于协作。
缺点:在线程管理方面有一定的不足,多个线程在同一个进程内,可以访问同样的内存空间,彼此之间互相影响;同时在开发过程中不可避免的要开发者自己进行内存管理,其增加了出错的风险。服务器系统需要长时间连续不断的运转,错误的逐渐积累可能对服务器产生重大影响。