进程WEB服务器apache lighttpd nginx详解

lighttpd  时间:2021-01-04  阅读:()

WEB服务器apache lighttpd nginx详解

WEB服务器apache lighttpd nginx详解

在说W EB服务器之前先说说线程、进程、 以及并发连接数

进程与线程

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位

从逻辑角度来看多线程的意义在于一个应用程序中有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别

.进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间一个进程崩溃后在保护模式下不会对其它进程产生影响而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量但线程之间没有单独的地址空间一个线程死掉就等于整个进程死掉所以多进程的程序要比多线程的程序健壮但在进程切换时耗费资源较大效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作只能用线程不能用进程。并发连接数

什么是最大并发连接数呢所谓最大并发连接数是服务器同一时间能处理最大会话数量

何为会话我们打开一个网站就是一个客户端浏览器与服务端的一个会话。我们浏览网页是基于http协议。

HTTP协议如何工作

HTTP支持两种建立连接的方式非持久连接和持久连接(HTTP 1. 1默认的连接方式为持久连接) 。

Web浏览器与Web服务器之间将完成下列7个步骤

1建立TCP连接

2 Web浏览器向Web服务器发送请求命令

3 Web浏览器发送请求头信息

4 Web服务器应答

5 Web服务器发送应答头信息

6 Web服务器向浏览器发送数据

7 Web服务器关闭TCP连接

一般情况下一旦Web服务器向浏览器发送了请求数据它就要关闭TCP连接但是浏览器一般其头信息加入了这行代码

Connection:keep-alive TCP连接在发送后将仍然保持打开状态于是浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间还节约了网络带宽

下面来看看连接数的计算

1、下载用户下载服务器上的文件则为一个连接用户文件下载完毕后这个连接就消失了。有时候用户用迅雷的多线程方式下载的话这一个用户开启了5个线程的话就算是5个连接

2、用户打开你的页面就算停留在页面没有对服务器发出任何请求那么在用户打开一面以后的15分钟内也都要算一个在线

3、上面的情况用户继续打开同一个网站的其他页面那么在线人数按照用户最后一次点击发出请求以后的15分钟计算在这个15分钟内不管用户怎么点击包括新窗口打开都还是一人在线。

4、当用户打开页面然后正常关闭浏览器用户的在线人数也会马上清除。

W EB服务器提供服务的方式

WEB服务器由于要同时为多个客户提供服务就必须使用某种方式来支持这种多任务的服务方式。一般情况下可以有以下三种方式来选择多进程方式、多线程方式及异步方式。其中多进程方式中服务器对一个客户要使用一个进程来提供服务 由于在操作系统中生成一个进程需要进程内存复制等额外的开销这样在客户较多时的性能就会降低。为了克服这种生成进程的额外开销可以使用多线程方式或异步方式。在多线程方式中使用进程中的多个线程提供服务由于线程的开销较小性能就会提高。事实上不需要任何额外开销的方式还是异步方式它使用非阻塞的方式与每个客户通信服务器使用一个进程进行轮询就行了。

虽然异步方式最为高效但它也有自己的缺点。因为异步方式

下多个任务之间的调度是由服务器程序自身来完成的而且一旦一个地方出现问题则整个服务器就会出现问题。因此 向这种服务器增加功能一方面要遵从该服务器自身特定的任务调度方式另一方面要确保代码中没有错误存在这就限制了服务器的功能使得异步方式的Web服务器的效率最高但功能简单。

由于多线程方式使用线程进行任务调度这样服务器的开发由于遵从标准从而变得简单并有利于多人协作。然而多个线程位于同一个进程内可以访问同样的内存空间 因此存在线程之间的影响并且申请的内存必须确保申请和释放。对于服务器系统来讲 由于它要数天、数月甚至数年连续不停的运转一点点错误就会逐渐积累而最终导致影响服务器的正常运转因此很难编写一个高稳定性的多线程服务器程序。

多进程方式的优势就在于稳定性因为一个进程退出的时候操作系统会回收其占用的资源从而使它不会留下任何垃圾。即便程序中出现错误 由于进程是相互隔离的那么这个错误不会积累起来而是随着这个进程的退出而得到清除

Apache(多进程模式prefork+多线程模式worker)prefork的工作原理

如果不用“——wi th-mpm”显式指定某种MPM,pre fork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式也是Apache1.3中采用的模式.prefork本身并没有使用到线程,2.0版使用它是为了与

1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一.worker的工作原理

相对于prefork,worker是2.0版中全新的支持多线程和多进程混合模型的MP M.由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器.但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性.这种MPM的工作方式将是Ap ach e2.0的发展趋势.

查看更多apache原理请看Apache服务的工作原理

Apache(cgi模式与模块模式) php在apache中两种工作方式的区别(CGI模式、 Apache模块模式) 这两种工作方式的区别

在CGI模式下如果客户机请求一个php文件 Web服务器就调用php. exe去解释这个文件然后再把解释的结果以网页的形式返回给客户机

而在模块化(DLL)中 PHP是与Web服务器一起启动并运行的。所以从某种角度上来说以apache模块方式安装的PHP4有着比CGI 模式更好的安全性以及更好的执行效率和速度。

FastCGI运行模式分析

FastCGI的工作原理是

1、Web Server启动时载入FastCGI进程管理器IIS ISAPI或Apache Module ;

2、 FastCGI进程管理器自身初始化启动多个CGI解释器进程(在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时 FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。

4、 FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器运行在WebServer中的下一个连接。 在正常的CGI模式中 php-cgi.exe 在此便退出了。

在上述情况中你可以想象CGI通常有多慢。每一个Web请求PHP 都必须重新解析php. ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI所有这些都只在进程启动时发生一次。一个额外的好处是持续数据库连接(Persistent database connection)可以工作。

使用FastCGI for PHP功能将mod_fastcgi代替原来的mod_phpsusexec可以令您的PHP程序从原来的请求-启动-运行到请求-运行模式从而使程序跑得更快流畅。

因为mod_fastcgi是使用了持久的连接所以能实现执行复杂的PHP 脚本或通过一个连接就能访问到多个数据库。总之它比mod_phpsusexec在相同的条件下执行的效果更佳。

好处

P HP脚本执行的更快。因为PHP解释器将载入到内存有点击请求时快速被调用执行不需再从存储中读取如此大大提高了脚本的执行效率

可以减轻服务器的负荷。因为服务器不需为每个点击请求而反复装卸PHP解释器节省了资源。例如减少了超过CPU使用限制的次数不需修改已有的PHP脚本

但是apache对于fastcgi模式的支持非常差劲

关于fastcgi的更多文章见fastcgi不完全指南http://www.phpchina.com/bbs/viewthread.php?tid=108866&highl i ght=fastcgi%2B

以及实战fastcgi http://linux. sheup. com/linux/linux194.htmLighttpd

Lighttpd是一个具有非常低的内存开销 cpu占用率低效能好 以及丰富的模块等特点。 lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth,输出压缩(output compress) , URL重写, Alias等重要功能。

Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。

Fastcgi的优点在于

从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,

从性能上看, fastcgi把动态逻辑的处理从server中分离出来,大负荷的IO处理还是留给宿主server,这样宿主server可以一心一意作IO,对于一个普通的动态网页来说,逻辑处理可能只有一小部分,大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)

从扩展性上讲, fastcgi是一个中立的技术标准,完全可以支持任何语言写的处理程序(php, java,python„)

N g i n x

Nginx以事件驱动的方式编写所以有非常好的性能 同时也是一个非常高效的反向代理、负载平衡。其拥有匹配Lighttpd的性能 同时还没有Lighttpd的内存泄漏问题而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。nginx做为HTTP服务器有以下几项基本特性

处理静态文件索引文件以及自动索引打开文件描述符缓冲

无缓存的反向代理加速简单的负载均衡和容错

FastCGI简单的负载均衡和容错

模块化的结构。包括gzipping, byte ranges, chunked responses,以及SSI-f ilter等f ilter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI则这项处理可以并行运行而不需要相互等待。

Nginx专为性能优化而开发性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。

FBICDN,0.1元解决伪墙/假墙攻击,超500 Gbps DDos 防御,每天免费流量高达100G,免费高防网站加速服务

最近很多网站都遭受到了伪墙/假墙攻击,导致网站流量大跌,间歇性打不开网站。这是一种新型的攻击方式,攻击者利用GWF规则漏洞,使用国内服务器绑定host的方式来触发GWF的自动过滤机制,造成GWF暂时性屏蔽你的网站和服务器IP(大概15分钟左右),使你的网站在国内无法打开,如果攻击请求不断,那么你的网站就会是一个一直无法正常访问的状态。常规解决办法:1,快速备案后使用国内服务器,2,使用国内免备案服...

美得云(15元/月)美国cera 2核4G 15元/月 香港1核 1G 3M独享

美得云怎么样?美得云好不好?美得云是第一次来推广软文,老板人脾气特别好,能感觉出来会用心对待用户。美得云这次为大家提供了几款性价比十分高的产品,美国cera 2核4G 15元/月 香港1核 1G 3M独享 15元/月,并且还提供了免费空间给大家使用。嘻嘻 我也打算去白嫖一个空间了。新用户注册福利-8折优惠码:H2dmBKbF 截止2021.10.1结束。KVM架构,99.99%高可用性,依托BGP...

CloudCone($82/月)15-100M不限流量,洛杉矶CN2 GIA线路服务器

之前分享过很多次CloudCone的信息,主要是VPS主机,其实商家也提供独立服务器租用,同样在洛杉矶MC机房,分为两种线路:普通优化线路及CN2 GIA,今天来分享下商家的CN2 GIA线路独立服务器产品,提供15-100Mbps带宽,不限制流量,可购买额外的DDoS高防IP,最低每月82美元起,支持使用PayPal或者支付宝等付款方式。下面分享几款洛杉矶CN2 GIA线路独立服务器配置信息。配...

lighttpd为你推荐
免费云主机有永久免费的云主机吗?网站空间域名关于网站的域名和空间?美国网站空间我想买个国外的网站空间,那家好,懂的用过的来说说100m虚拟主机虚拟主机 100M 和200M 的区别?那个速度快?为什么?万网虚拟主机万网,云服务器和与虚拟主机有什么区别?我是完全不知到的那种,谢谢。用前者还是后者合适。怎么做网页。合肥虚拟主机虚拟主机怎么弄!河南虚拟主机新乡在哪个网站买虚拟主机好?华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题域名邮箱如何注册域名邮箱申请域名申请一个域名要多少钱?
香港虚拟空间 天津虚拟主机 国内vps 工信部域名备案系统 mediafire 鲜果阅读 火车票抢票攻略 万网优惠券 好看的桌面背景图 长沙服务器 qq数据库 合肥鹏博士 双拼域名 gspeed 共享主机 qq云端 100mbps 免费网页空间 服务器硬件防火墙 免费的asp空间 更多