精华内容
下载资源
问答
  • web服务器 并发 基本概念

    千次阅读 2016-04-10 20:17:11
     Web服务器的吞吐率是指其单位时间内所能处理的请求数。更关心的是服务器并发处理能力的上限即最大吞吐率。  Web服务器在实际工作中,其处理的Http请求包括对很多不同资源的请求即请求的url不一样。正因为这种...
    序: 
    

        这里指的服务器是指提供HTTP服务的服务器,人们通常衡量一台web服务器能力的大小为其在单位时间内能处理的请求数的多少。

    3.1 吞吐率

        Web服务器的吞吐率是指其单位时间内所能处理的请求数。更关心的是服务器并发处理能力的上限即最大吞吐率。

        Web服务器在实际工作中,其处理的Http请求包括对很多不同资源的请求即请求的url不一样。正因为这种请求性质的不同,Web服务器并发能力的强弱关键在于如何针对不同的请求性质设计不同的并发策略。有时候一台Web服务器要同时处理许多不同性质的请求,在一程度上使得Web服务器性能无法发挥。

        并发用户数为某一时刻同时向服务器发送请求的用户数。注意,100个用户同时向服务器各发10个请求与1个用户同时向服务器发1000个请求对服务器造成的压力是不一样的,显然是前者造成的压力更大,原因是此时服务器网卡接收缓冲区中的请求同时有100个等待处理。

        最大并发数是有一定利益前提的,是用户和服务器各自期望利益的一个衡量点。一般是服务器保持了比较高的吞吐率同时用户对等待时间比较满意时的并发数即可定为最大并发数。

        在并发用户数较大的情况下,服务器采用什么样的并发策略是影响最大并发数的关键。

        用户访问web站点通常是使用浏览器,而浏览器在下载一个网页及网页中的组件是采用多线程下载的。但其对同一域名下的URL并发下载数是有限制的,具体限制因浏览器及其版本和http版本不同。

        服务器支持的最大并发数具体到真实用户并不是一对一的关系。一个真实的用户可能给服务器带来两个或更多的并发用户数的压力。

        从web服务器的角度看,实际并发用户数可理解为服务器维护不同用户的文件描述符总数即并发连接数。不是同时有多少用户,服务器就为其建立多少连接,服务器一般会限制同时服务的最多用户数。

        web服务器工作的本质是以最快的速度将内核缓冲区中的用户请求数据拿回来并尽量尽快处理完这些请求,并将响应数据放到发送数据的缓冲区中,再去处理下一拨请求,如此反复。

        用户平均请求等待时间用于衡量服务器在一定并发用户数下对单个用户的服务质量。而服务器平均请求处理时间用于衡量服务器的整体服务质量,它是吞吐率的倒数。如果并发策略得当,每个请求的平均处理时间可以减少。

        并发策略的设计就是在服务器同时处理较多请求的时候合理协调并充分利用CPU和IO计算 ,使其在较大并发用户数下保持较高的吞吐率。但并不存在一个对所有请求性质都较高的并发策略。

    3.2 CPU并发计算

        服务器之所以可以同时处理多个请求,在于操作系统通过多执行流体系设计多个任务可以轮流使用系统资源,包括CPU、内存、IO等。

        多执行流的一般实现便是进程,多进程的好处可以对CPU时间的轮流使用,对CPU计算和IO操作重叠利用。这里的IO主要是指磁盘IO和网络IO,对CPU而言,它们慢的可怜。大多数进程的时间主要耗在IO上。

        进程的调度由内核执行,进程的目的是担当分配资源的实体。每个进程都有自己的内存地址空间和生命周期。子进程被父进程创建后便把父进程地址空间的所有数据复制到自己的内存地址空间。完全继承父进程的上下文信息,它们之间可以互相通信,但不互相依赖,无权干涉。

        进程的创建使用fork()系统调用,服务器频繁地创建进程会引起不小的性能开销。Linux 2.6对fork()进行了优化,减少了一些多余的内存复制。

        进程的优越性体现在其稳定性和健壮性,其中一个进程崩溃不会影响到另一个进程。但采用大量进程的web服务器(如:Apache prefork模型)在处理大量并发请求时其内存开销将成为性能的瓶颈。

        轻量级进程由系统调用clone()来创建,由内核管理,独立存在,允许这些进程共享数据,轻量级进程减少了内存开销,为多进程应用提供了数据共享,但其上下文切换开销还是避免不了。

        一般多线程的管理在用户态完成,线程切换的开销比轻量级进程切换开销要小,但它在多CPU服务器中表现较差。

        进程调度器维护着一个可运行队列以及一个包括所有休眠和僵尸进程的列表。进程调度器的工作就是决定下一个运行的进程。如果队列中有多个可运行的进程,此时进程调度器可根据进程的优先级及其它策略进行选择。

        CPU时间片的长度要具体权衡,时间片太短,那么CPU在进程切换上的时间浪费就比较大,如果时间片太长,那么多任务实时性和交互性就无法做到保证。

        系统负载越高代表CPU越忙,也就越无法很好地满足所有进程的需要。系统负载的计算是根据单位时间内运行队列中就绪等待的进程数平均值。当运行队列中的就绪进程不需要等待就可以立即得到CPU说明系统负载比较低,系统响应速度也就快。

        查看系统负载可以通过cat /proc/loadavg、top、w等命令工具查看。

        进程的切换就是进程调度器挂起正在运行的进程,恢复之前挂起的某个进程。

        每个进程只能共享CPU寄存器,一个进程被挂起的本质就是将其在CPU寄存器中的数据取出来暂存到内核堆栈中,恢复一个进程的本质就是将其数据重新载入到CPU寄存器中,其实这种硬件上下文切换的开销也是挺大的。

        要服务器支持较大的并发数,就要减少上下文切换的次数,最简单地做法是减少进程数目,尽量使用线程配合其它IO模型来设计并发策略。

        除了关注CPU使用率外,还要关注IOWait,它是指CPU空闲并等待IO操作完成的时间比例。IOWait不能真实地代表IO操作的性能或工作量,它是衡量CPU性能的。即使IOWait为100%也不代表IO出现性能瓶颈,IOWait为0时IO也可能很忙。此时,最好是测试磁盘IO和查看网络IO的流量。

    3.3 系统调用

        进程有用户态和内核态两种运行模式。进程可以在这两种模式中切换,存在一定的开销。进程通常运行在用户态,当进程需要对硬件操作的时候就要切换到内核态。这两种模式的分离是为了底层操作的安全性和简化开发模型。所有进程都必须通过内核提供的系统调用来操作硬件。进程从用户态到内核态存在一定的内存空间切换,这种开销是比较昂贵的,应尽量减少不必要的系统调用。

    3.4 内存分配

        Web服务器在工作的过程中需要大量的内存,这使得内存的分配和释放很重要。服务器处理成千上万的http请求,其内存堆栈的分配和复制次数变得更加频繁。

        Apache在运行时内存使用量非常惊人,它一开始就申请大量内存作内存池,为防止以后频繁的内存再分配带来的性能开销,内存池的使用使用Apache管理更安全,但内存池的使用也没有弥补其性能,其内存池的释放是在Apache关闭的时候。

        Lighttpd使用单进程模型,其内存使用量比较小,同样是使用单进程的Nginx其内存使用量更小,Nginx使用多线程处理请求,这些多线程可以共享内存资源,它使用分阶段按需分配内存、及时释放策略。

    3.5 持久连接

        持久连接是指一次TCP连接中持续处理多个请求而不断开连接。建立TCP连接操作的开销可不小,在允许的情况下,连接次数越小越有利于性能提升。

        长连接对于密集型的图片或网页等小数据量的请求有明显的加速作用。

        Http长连接的实施需要浏览器和服务器的配合,缺一不可。

        浏览器要支持http长连接可以在http请求头中加入:Connection: Keep-Alive,目前主流web服务器都默认使用长连接,除非显式关闭。

        对于长连接的使用要注意长连接的有效时间多长,即什么时候关闭长连接,浏览器和服务器都有默认的有效时间,也都可以设置有效时间,都可以主动关闭,若两者设置的时间长度不一致,以短的为准。例如:

        请求:Connection:Keep-Alive

         响应:Connection:Keep-Alive

                    Keep-Alive:timeout=5,max=100

        持久连接的目的就是减少连接次数,重用已有的连接通道,减少连接开销。

    3.6 IO模型

        IO有内存IO、网络IO和磁盘IO等。

        可以使用RAID磁盘阵列来加速对磁盘IO的访问,使用独立网络带宽和高带宽网络适配器可以搞网络IO速度,但IO操作都要由内核系统调用完成,系统调用需要CPU调用,无疑存在CPU快和IO慢的不协调。

        我们所关注的IO操作主要是网络数据的发送、接收和磁盘文件的访问。不同IO模型的本质在于CPU参与的方式。

        DMA:直接内存访问。即不需要通过CPU即可以进行内存到磁盘的数据交换。这样就可降低对CPU的占有率,节省系统资源。

        IO等待是不可避免的,既然有等待,就会有阻塞。这里的阻塞是指当前发起请求的进程IO被阻塞,并不是CPU被阻塞,CPU是没有阻塞的,它只有拼命地计算。

        同步阻塞IO是指当前进程调用某些IO操作的系统调用或库函数时,进程便暂停下来,等待IO操作完成后再继续进行,这种模型可以和多进程结合起来有效利用CPU资源,但其代价就是多进程的大内存开销。这种模型的等待时间包括等待数据的就绪和等待数据的复制。

        同步非阻塞IO是指调用不会等待数据的就绪,当没数据可读或可写时立即告诉进程,让其函数及时返回。通过反复轮询来尝试数据是否就绪,防止进程被阻塞,最大的一个好处就是可以在一个进程内同时处理多个IO操作。但是反复轮询会大量占用CPU时间,使得进程处于忙碌等待状态。非阻塞IO只对网络IO有效,对磁盘IO无效。

        多路IO就绪通知允许进程通过一种方法同时监视所有文件描述符,并可以快速获得所有就绪的文件描述符,然后只针对这些文件描述符进行数据访问。当然,要注意,这种模型在数据访问时仍然要采用阻塞或非阻塞方式进行。

        select:通过一个select()系统调用来监视并返回就绪的文件描述符,从而对这些文件描述符进行后续的读写。几乎所有的平台都支持这种方式,可以跨平台,但它的缺点是单个进程可监视的文件描述符数量有最大限制,Linux上一般为1024,它对所有socket进行一次性扫描也存在开销。

        poll:与select没有本质区别,只是poll没有最大文件描述符数量限制。它的缺点也是将大理文件描述符的数组在用户态和内核态来回复制,而不管文件描述符是否就绪,开销会成线性增长。

        epoll:Linux2.6才出现,具有其它方式的一切优点,是Linux2.6下性能最好的多路IO就绪通知方法。它基于事件的就绪通知方式。

        kqueue:性能和epoll差不多,它是FreeBSD下的,但它的API在许多平台下不支持。

        内存映射是指将内存中某块地址空间和我们指定的磁盘文件相关联,从而把对这块内存的访问转换为对磁盘文件的访问。内存映射可以提高磁盘IO性能,像访问内存一样地访问磁盘文件。有两种内存映射,共享型和私有型。共享型是指对任何内存的写操作都同步到磁盘文件,而所有映射同一个文件的进程都共享任意一个进程对映射内存的修改。私有型是指映射的文件只能是只读文件,不可以将内存的写同步到文件,多个进程不共享修改。显然,共享型的内存映射效率偏低。

        直接IO就是指绕过内核缓冲区,打开的文件可直接访问,避免CPU和内存的多余时间开销。

        sendfile系统调用可将磁盘文件的特定部分直接送到客户端的Socket的描述符,加快静态文件的请求速度,减少CPU和内存的开销。

        阻塞和非阻塞是指当进程访问的数据尚未就绪,进程是否等待即是立即返回还是继续等待。同步是指主动请求并等待IO操作完成,当数据就绪后读写时必须阻塞。异步是指主动请求数据后可以继续处理其它任务,随便等待IO操作完成的通知,即读写时进程不阻塞。

    3.7 服务器并发策略

        设计并发策略的目的就是就是让IO操作和CPU计算尽量重叠进行。一方面要让CPU在IO等待不要空闲,另一方面要让CPU在IO调度上尽量花最少的时间。

        (1)一个进程处理一个连接,非阻塞IO

            这样会存在多个并发请求同时到达时,服务器必然要准备多个进程来处理请求。这种策略典型的例子就是Apache的fork和prefork模式。对于并发数不高的站点同时依赖Apache其它功能时的应用选择Apache还是可以的。

        (2)一个线程处理一个连接,非阻塞IO

            这种方式允许在一个进程中通过多个线程来处理多个连接,一个线程处理一个连接。Apache的worker模式就是这种典型例子,使其可支持更多的并发连接。不过这种模式的总体性能还不如prefork,所以一般不选用worker模式。

        (3)一个进程处理多个连接,非阻塞IO

            适用的前提条件就是多路IO就绪通知的应用。这种情况下,将处理多个连接的进程叫做worker进程或服务进程。worker的数量可以配置,如Nginx中的worker_processes 4

        (4)一个线程处理多个连接,异步IO

            即使有高性能的多路IO就绪通知,但磁盘IO的等待还是无法避免的。更加高效的方法是对磁盘文件使用异步IO,目前很少有Web服务器真正意义上支持这种异步IO

    展开全文
  • WEB基本概念

    千次阅读 2017-10-12 21:41:45
    1.互联网 ...服务器:邮件服务器(收发电子邮件)、FTP服务器(文件传输)、域名服务器DNS(域名解析)和Web服务器(组织并展示相关的信息资源)等,承担各种服务任务的计算机就叫服务器。 各种...

    1.互联网

    通讯介质:光纤、双绞线、同轴电缆、微波、卫星。

    通讯设备:交换机、路由器、网关、防火墙等。

    通讯协议:TCP/IP、HTTP、SMTP、FTP、POP3等。

    终端设备:台式机、手机、平板、打印机等

    服务器:邮件服务器(收发电子邮件)、FTP服务器(文件传输)、域名服务器DNS(域名解析)和Web服务器(组织并展示相关的信息资源)等,承担各种服务任务的计算机就叫服务器。

    各种软件:各种浏览器、手机APP、应用软件、系统软件、工具软件等

    2.互联网+

    互联网+ = 传统行业 + 互联网

    3.Web

     全称World Wide Web,缩写WWW,译为‘万维网’,简称为Web是一个可通过互联网来访问的,由许多互相链接的超文本(HyperText)组成的系统。

    URI:Uniform Resource Identifier 统一资源标识符

    HTTP:HyperText Transfer Protocol 超文本传输协议

    传输过程:浏览器输入URI→通过HTPP→经过网络→到达指定服务器→发出请求后,服务器就会把处理结果返回给浏览器。

    注意:Web不等于Internet

    它只是Internet中的一部分,以后只要提到Web,就一定是和浏览器有关的事项。Web是互联网提供信息的一种手段。

    4.Web服务器

    又称WWW服务器、网站服务器、站点服务器或HTTP服务器将信息用超文本(HyperText)组织,为用户在Internet上搜索和浏览信息提供服务。

    Web服务器实际上就是一个软件系统,它必须安装在一台高性能和高可靠性的计算机上,人们通常将这台计算机就叫做Web服务器。

    它分为硬件服务器和软件服务器。

    有些Web服务器是没有运行界面的,在后台运行。

    常用的Web服务器有:Microsoft IIS、IBM WebSphere、Oracle WebLogic、金蝶公司 Apusic、Apache 开源、Tomcat 开源、JBoss 开源。

    安装UINX、Linux或Windows 2003/2008/2012 Server等网络操作系统。一台计算机可以安装多个Web服务器。

    在Web世界里,每一个Web服务器除了提供自己独特的信息服务外,还可用超链接(Hyperlink)指向其他Web服务器,而这些Web服务器又可指向更多的Web服务器,这样,一个全球范围的、由Web服务器组成的万维网就形成了。

    注:一般要花钱购买的Web服务器,可以最大支持并发的用户数。

    5.Web页面

    Web在提供信息服务之前,所有信息都必须以文件方式事先存放在Web服务器磁盘中的某个文件夹下,其中包含了由超文本标记语言HTML组成的文本文件,这些文本文件称为网页文件或Web页面文件 Web page。

    6.统一资源定位符 URL

    信息资源放在Web服务器之后,需要将它的地址告诉用户,以便让用户来访问,这个地址就叫统一资源定位符 Uniform Resource Locators,URL,俗称网址。

    注:互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。主机名可直接输入对应的IP地址,有时也包括端口号。

    Web服务器默认TCP端口号为80,用于监听有无页面请求。

    疑问点:

    为什么有时URL地址中没有文件名还能照常显示页面内容呢?

    在Web服务器的配置中,可事先设定一个或多个默认文件名,浏览器会自动查找这些默认的文件名。

    URL和URI的区别:

    统一资源标识符URI Uniform Resource Identifier 是一个用于标识某一互联网资源名称的字符串,Web上可用的每种资源HTML、文档、图像、视频片段、程序等都可由URI定位。

    URL网址只是属于URI的一种,用来定位所需访问的网页地址,有时会混用。

    URL相对地址和绝对地址,又叫URL相对路径和绝对路径。

    URL绝对地址:完整的协议名+主机名+文件名

    如:http://www.baidu.com/gif/stone.jpg、http://www.baidu.com/index.htm

    URL相对路径:href='../snake.htm'href='./me.jpg'相当于href='me.jpg'

    双点表示上一级目录、点号和没点表示当前目录。

    URL相对地址和绝对地址的使用对比:

    URL绝对地址可直接在浏览器中输入,访问资源,相对地址则不可用在浏览器地址栏。

    URL绝对地址和相对地址都可用在页面文件中,但页面文件中尽量用相对地址。

    为什么?

    1.网站的目录名有时需要变更,使用相对路径可减少目录名变更的影响,运行正常网站搬到其他地方图片就不显示了,大都属于URL路径的问题。

    2..当网站目录层次较多,目录名程较长时,使用相对路径易于书写,避免出错,也减少了页面文件的字节数。

    --本文来自本人学习重庆大学王成良教授课程《Web开发技术》的笔记--

    展开全文
  • 关于流媒体服务器基本概念梳理

    千次阅读 2018-10-12 17:55:07
    服务器纷繁复杂,我们先来梳理下服务器概念。 维基解释是: 一个管理资源并为用户提供服务的计算机软件,也就是常说的“服务”; 在单机上提供服务的称为本地服务,通过网络对外提供服务的称为网络服务。 下面说的...

    1. 导言

    服务器纷繁复杂,我们先来梳理下服务器的概念。

    维基解释是:
    一个管理资源并为用户提供服务的计算机软件,也就是常说的“服务”;

    在单机上提供服务的称为本地服务,通过网络对外提供服务的称为网络服务。

    下面说的服务指服务器提供的服务,也就是服务器的功能,它能为你做的事,比如:
    文件服务器提供文件浏览服务、文件下载服务
    web 服务器提供网页浏览、查看图片、查看视频等服务
    数据库服务器提供数据存储、数据查找、数据删除等服务

    当然还有其他很多类型的服务器:邮件服务器、域名服务器、FTP 服务器、应用程序服务器、流媒体服务器等等。

    2. 流媒体服务器

    下面介绍流媒体服务器相关知识:

    先看流媒体的维基解释:
    流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输,是边下载观赏影音的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就 必须 在使用前下载整个媒体文件。

    流媒体技术应用:
    视频点播、视频会议、远程教育、远程医疗、在线直播等。

    而流媒体服务器是流媒体应用的核心系统,在流媒体技术中承担了对媒体内容(视频、音频、图片文件等)进行采集、缓存、调度、传输播放等功能。流媒体应用的性能主要体现在流媒体服务器的性能。

    流媒体服务器既然是在网络上输送流媒体数据到客户端,那必然涉及传输协议,这里流媒体服务器一般采用的协议有:RTP、RTSP、MMS、RTMP等。

    那么流媒体服务器如何提供直播服务(以 RTMP 协议为例)?例如, nginx 提供的 rtmp 模块为什么要配置 app?

    3.常见的流媒体服务器

    公司流媒体服务器流媒体协议播放器(客户端)
    微软Windows Media Server(WMS)MMSWindows Media Player(WMP)
    AdobeFlash Media ServerRTMP(RTMPT/RTMPE/RTMPS)Flash Player
    RealNetworksHelix ServerRTP/RTSPReal Player
    展开全文
  • 主流web服务器介绍

    千次阅读 2014-05-02 13:54:39
     本文主要描述几种主流web服务器之间的对比,以便在不同的场景下,选择不同的web服务器,分为基本概念web服务器、web容器对比 基本概念:  1. 应用服务器:通过各种协议,包括http协议,把业务逻辑暴露给...

    前言:

        转载请标明出处。

        本文主要描述几种主流web服务器的功能介绍,对网上资料进行一些整理,同时加入部分自己理解,以便在不同的场景下,选择不同的web服务器。

         本文结构分为基本概念、主流web服务器介绍、主流web容器介绍


    基本概念(个人通俗理解):

        1. 应用服务器:通过各种协议,包括http协议,把业务逻辑暴露给客户端应用程序,应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至 是其它的应用程序服务器上。

        2. web服务器:WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。

          1) 应用层 使用 HTTP协议
          2)HTML( 标准通用标记语言 下的一个应用)文档格式。
          3) 浏览器 统一资源定位器 URL

         3. web应用服务器:web服务器与应用服务器存在一定的交集,如:静态新闻网站的web服务器,就是提供各种新闻信息,其信息之间没有先后逻辑关系,是一个比较纯粹的web服务器;而很多公司的OA、ERP等系统,可以通过浏览器进行访问,但是其页面的跳转、局部页面的动态刷新都存在着一定先后逻辑关系,这类系统的web服务器,就承担了应用服务器的角色,因此可以称为web应用服务器

         4. web容器
         容器是一种服务调用规范框架,WEB 容器给处于其中的应用程序组件,如:JSP、SERVLET,提供一个环境,使 JSP,SERVLET 直接跟容器中的环境变量交互,不必关注其它系统问题,将最终的结果解释HTML文档格式,提供给web服务器。当前主流的web容器,如:tomcat、weblogic、jboss等,其本身就已经具备了web服务器的功能


                


    主流web服务器介绍:

        全球仍旧超半数的活跃网站使用Apache Web服务器,市场份额为52.18%。Nginx排名第二,市场份额升至14.19%。Microsoft第三,11.37%。Google第四,至8.33%

              

        1. Apache

        Apache的特点是简单、速度快、性能稳定,并可做代理服务器来 使用。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此, 在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

        2.Nginx

        Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。

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

        Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。

        Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。

        3.IIS

        IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器, 分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供 ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。

        4. lighttpd:

         Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点,使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。




    server

    Apache

    Nginx     

    Lighttpd

    Proxy代理

    非常好

    非常好

    一般

    Rewriter

    非常好

    一般

    Fcgi

    不好

    非常好

    热部署

    不支持

    支持

    不支持

    系统压力比较

    很大

    很小

    比较小

    稳定性

    非常好

    不好

    安全性

    一般

    一般

    技术支持

    非常好

    很少

    一般

    静态文件处理

    一般

    非常好

    Vhosts虚拟主机

    支持

    不支持

    支持

    反向代理

    一般

    非常好

    一般

    Session sticky

    支持

    不支持

    不支持


      建议方案:

    Apache 后台服务器(主要处理php及一些功能请求 如:中文url)

    Nginx  前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)

    Lighttpd 图片服务器

    总体来说,随着nginx功能得完善将使他成为今后web server得主流。


    主要web容器介绍

       本文中web容器主要是指具有web容器功能的web服务器,主要都是Java和Asp.net,php,python等貌似一般不需要单独的应用服务器


       1. Tomcat 免费

        Tomcat是Apache鼎力支持的Java Web应用服务器,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页 面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态 Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可


       2. JBoss 免费(文档收费)

       Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾,已经被RedHat收购。

       而JBoss Web采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。JBoss在Tomcat的基础上,对其进行本地化,将Tomcat 以内嵌的方式集成到 JBoss 中。JBoss Web通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。JBoss Web达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如JBoss Web能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。


       3.Jetty

       Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler(注意不是容器,放在这里是因为其经常会被与Tomcat进行比较),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。

       Tomcat 在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。而 Jetty 刚好相反,Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。

       详细信息,参考:http://www.ibm.com/developerworks/cn/java/j-lo-jetty/

            http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html


       4. Resin

        Resin也仅仅是一个Servlet容器,然而由于它优秀的运行速度,使得它在轻量级Java Web领域备受喜爱,特别是在互联网Web服务领域,众多知名公司都采用其作为他们的Java Web应用服务器,譬如163、ku6等。


       5.glassfish

       glassfish是Sun公司推出的Java EE服务器,是一个免费、开放源代码的应用服务,它实现了Java EE 5,Java EE 5 平台包括了以下最新技术:EJB 3.0、JSF 1.2、Servlet 2.5、JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等.­

       支持集群,通过内存中会话状态复制,增强了部署体系结构的可用性与可伸缩性,它对集群有着很好的支持,可以简单到通过添加机器,就可轻松的提高网站的带负载能力,在解析能力方面,它对html的吞吐能力与apache服务器不分上下,就是tomcat所不能比的,支持目录部署,热部署,解决了tomcat对热部署能力的缺陷.在版本方面做的更加人性化,有开发时用的简化版,专门用于部署web项目的版本,还要完全符合j2ee标准的版本.

    ­

      6.IBM WebSphere 收费

        WebSphere Application Server 是 一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。

       IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。


       7. BEA WebLogic Server 收费

         是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库, 还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。 

       BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。BEA WebLogic Server 的遵从 J2EE 、面向服务的架构,以及丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。


    资料参考:

       http://www.199it.com/archives/201639.html

       http://blog.csdn.net/newnewman80/article/details/8809560

       http://www.cnblogs.com/itech/archive/2009/08/18/1548860.html

       http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html

       http://m.oschina.net/blog/178358

       http://www.bianceng.cn/Programming/Java/201101/22999.htm

       http://soft.zdnet.com.cn/software_zone/2008/0919/1138298.shtml

             http://www.ibm.com/developerworks/cn/java/j-lo-jetty/index.html


    
    
    
    展开全文
  • linux web服务器的配置

    2010-01-13 16:32:18
    web服务器的一些基本概念以及apache服务器的配置
  • Web建站基本概念

    千次阅读 2014-08-02 21:00:13
    访问过程和下图差不多,浏览器和服务器交流,服务器和数据库交流(有时候数据库就在服务器那台机子上) HTML 与 CSS 你家电脑拿到一个 html (就是上图 HTTP 响应的 body 里的内容)之后,就会对它进行
  • 2.1 Web服务器基本概念 5 2.2 HTTP协议的运作方式 6 2.2.1 HTTP协义基本介绍 6 2.2.2 HTTP 协议组成 7 2.2.3 TCP 对 HTTP的影响 9 2.3 Socket通信 10 2.4 Web服务器性能测试 11 2.5 影响Web服务器性能测试的主要...
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-08-14 17:12:00
    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的...
  • 基本概念 前言 web开发 web:网页 静态web html,css 提供给所有人看的数据始终不会发生变化 动态web 几乎所有的网站 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不...
  • web 服务器有哪些

    万次阅读 多人点赞 2018-08-27 16:53:49
    什么是web服务器 "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"...
  • C++web服务器开发

    千次阅读 2019-08-14 08:55:56
    C++web服务器开发 1. 首先介绍一下这个项目;这个项目是通过C++11编写的web服务器,模型为Reactor+非阻塞I/O(epoll作为I/O多路复用实现方式)+线程池,支持get、head请求,支持HTTP长连接,并实现了优雅关闭连接。 ...
  • Ubuntu 18.04下使用Apache搭建一个web服务器

    万次阅读 多人点赞 2018-07-24 21:30:40
    Ubuntu 18.04下使用Apache搭建一个web服务器 几个必要的概念 web服务器 以我之见,web服务器就是运行在计算机上的一个向整个网络或者是web客户端、浏览器提供文档的一个程序,我们通过http请求便可以获取到...
  • Ruby on Rails开发Web应用的基本概念

    千次阅读 2014-05-20 10:44:02
    Web应用架构 C/S架构 Web应用从最初就采用C/S架构。Server负责监听客户端请求,提供资源,Client向server发起请求并渲染页面。两者通过TCP/IP协议栈之上的HTTP协议通信。 多层架构 在Web 2.0时代,随着交互性的...
  • Web服务器脚本技术

    千次阅读 2008-08-24 18:12:00
    Web服务器脚本技术概述CGI、ASP、JSP、PHPCGIn 基本概念CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上:l 通过Internet把用户请求送到...
  • 基本概念 反向代理  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理...
  • 嵌入式设备web服务器比较

    千次阅读 2016-12-16 13:33:20
    现在在嵌入式设备中所使用的web服务器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年,作者Paul Philips。是开源的,应用很广泛,特别适合于嵌入式...
  • Java web 服务器配置

    千次阅读 2015-11-23 11:15:44
    一、基本概念 1.1、WEB开发的相关知识  WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。  Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):指web页面中供人们...
  • WEB服务器性能瓶颈分析

    万次阅读 2011-11-04 20:50:14
    本文先介绍一下各种WEB服务器平台,然后对影响WEB服务器性能的各方面做了分析,最后解析了目前使用最普遍的Apache服务器在服务请求高峰时的响应延迟现象  在上周的一篇文章里,我们介绍了搭建WEB服务器的方法,...
  • Web服务器的工作原理(一)

    千次阅读 2016-11-21 15:16:31
    Web服务器的工作原理(一)12@(服务器)[Web服务器, Notes] VICTORY LOVES PREPARATIONWeb服务器的工作原理一12 思维导图 一web服务器应用服务器和web容器 web服务器 应用服务器 web容器 二Servlet 三ServletContext...
  • 什么是Web?及web服务器原理

    千次阅读 2016-12-10 23:53:06
    Web就是一种超文本信息系统,Web的一个主要的概念就是超文本连接,它使得文本不再象一本书一样是固定的线性的。而是可以从一个位置跳到另外的位置。你可以从中获取更多的信息。可以转到别的主题上。想要了解某一个...
  • 实验思考题 1实验目的 理解WebFTP服务器基本概念 掌握一个具体的WebFTP服务器Xitami的安装配置和启停办法 掌握Xitami中的FTPWWW的测试内容发布和其他应用 2实验任务与要求 安装Xitami服务器软件 启动Xitami使其...
  • Tomcat学习笔记01【Web相关概念、Tomcat基本操作】
  • 1. 初始化所有的 Flask 程序都必须创建一个程序实例,所谓程序实例,...app = Flask(__name__)Web 服务器使用一种名为 Web 服务器网关接口(Web Server Gateway Interface,WSGI)的协议,把接收自客户端(client)的所
  • Web服务器工作原理概述

    千次阅读 2015-06-24 22:07:39
    原文链接: ...很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletCont
  • web服务器运行原理

    千次阅读 2019-03-04 09:45:41
    这几天的工作,就是把程序解耦,将功能分离,服务器只用来提供WEB服务,WEB应用用来实现数据处理。 大家可以了解一下开发中比较常用的WEB框架,比如 Apache ,Nigix,Tomcat等。 没有一个服务器框架安装完成后,就...
  •  大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分。但是不得不承认的是WebService真的是一门新兴和有前途的...
  • 服务器概念

    千次阅读 多人点赞 2016-01-07 22:07:05
    第一次听到服务器的时候,脑子里的第一个想法就是,这个就是给计算机服务的东西吧,然而自己也是没有真的了解服务器的含义,总有点模棱两可的感觉,今天就找了一些关于服务器的资料,进一步的连接服务器。...
  • Web服务器的工作原理

    千次阅读 2015-12-01 11:23:40
    了解WEB服务器的工作原理和相关概念是后台开发人员的必修课,这篇文章来自 : Web服务器的工作原理很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http...
  • 在腾讯云上快速搭建web服务器

    千次阅读 2018-03-24 14:00:16
    个人或者企业搭建网站是万万不能离开它的,然而搭建Web服务器却对于一部分非专业人士来说是相当困难的一件事情,所以小编推荐此文章,来帮助大家,如何借助腾讯云来快速的搭建自己的Web服务器。 背景: 现如今...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 219,915
精华内容 87,966
关键字:

web服务器的基本概念