• 辛星站点架构师笔记第四篇


           本节我们了解一下webserver,要说到webserver,恐怕还不能不提一下大名鼎鼎的Apache,这个神一样的server仍然占领着至少一半的市场。Apache原来用于小型或者是实验性的Internet网络,后来逐步扩展到各种系统中去,对linux的支持近乎完美。Apache能够支持SSL技术,支持多态虚拟主机。并且它是以进程为基础的结构,而进程比线程使用很多其它的系统资源,因此不适用于多处理器环境。

       假设站点的訪问量非常大,那么每天的日志文件也会非常大,这时候能够使用Apache自带的rotetelogs来对日志文件进行分割,分割为较小的文件,对数据分析来说还是一样的效果。后面我会写自己的教程给大家演示的,这里就不废话了。

       以下重点说说Apache的几个比較重要的模块把。第一个就是压缩模块,Gzip是一种很流行的压缩算法,并且应用十分广泛,尤其是在linux平台上,当一个纯文本用Gzip压缩的时候,能够减少百分之七十以上的文件大小。我们能够将Apache公布的网页内容通过Gzip压缩后再传输给用户浏览器,这样能够减少网络传输的字节数,最明显的优点就是加快网页载入的速度。仅仅要server支持,一般建议开启Gzip压缩。在Apache上利用Gzip压缩算法进行压缩的模块有两种:mod_gzip和mod_deflate,要使用Gzip压缩,首先应该确定server是否开启了对那个组件的支持。我们能够通过看HTTP头来推断client浏览器是否接受gzip压缩,也就是看HTTP头中的Accept-Encoding这个信息,那么如今的主流浏览器都是支持gzip压缩的。而MIME类型是能够依据实际情况自行加入吧,对于pdf、图片、音乐等文件,本身已经高度压缩了,所以反复压缩的效果并不大,反而可能会由于添加了机器的负载而减少了性能。那么mod_gzip和mod_deflate有什么差别呢?差别就是mod_deflate压缩速度快,可是mod_gizp的压缩比要高。我们还能够定义mod_deflate的压缩级别,这个数值从1到9,一般来说数字越小,压缩速度越快,压缩质量对应也会低一些。

         第二个就是简单的防DDOS攻击的模块,一般来说,mod_dosevasive是Apache的第三方可选模块,能够应对某些基于HTTP的拒绝服务的攻击,也就是通常所说的DDOS攻击。该模块从Apache1.3版本号出现,它不能全然而彻底的防止大规模的DDOS攻击,可是对于一个一般的中小型站点来说,它还是有一定的效果的。它的原理也非常easy,就是假设某一个时间段内某个IP訪问的次数过快,那么就直接返回一个403错误。

         第三个就是mod_limitipconn模块,它的主要目的是防止用户的多线程下载,这样非常easy吃光server的资源,特别是对一些小站点来说,很多线程同一时候发送请求,会对server造成较大影响。我们能够通过限制下载使用的线程数,也就是限制同一个IP的并发连接数。

         然后我们认识一下lighttpd吧,它是一款德国人领导的开源软件,根本目的是提供一个专门针对高性能站点的、安全、高速、兼容性好并且灵活的web服务环境。它的内开销相当的低、CPU占用率低,性能卓越,并且模块丰富,是众多开源的轻量级webserver中较为优秀的而一款。并且单纯的看功能,它也支持FastCGI、CGI、auth、输出压缩、URL重写、alias等功能,在非常多功能上lighttpd与Apache有的一拼。

        以下我们来分析一下lighttpd把,单纯从性能上来说,首先考虑单进程与多进程的关系,多进程server比方Apache在发送一个请求的时候会唤醒全部睡眠的进程,可是终于服务的仅仅有一个,在进程数目较多、请求频繁的时候这会造成非常大的困扰,使系统不停地忙于切换进程。而lighttpd则使用单进程来响应请求,以libevent,poll()作为event  handler,假设不使用大文件支持,并且是单纯的静态文件,性能是超越Apache的。

         Apache的主要缺点就是在密集并发的状态下,进程须要不断的切换,并且占用的内存相对较高,可能会使得系统的资源枯竭,而Lighttpd採用了Multiplex技术,代码经过优化之后,体积非常小,资源占用率低非常多,反应速度也相当的快。

        假设是用Apache的重写技术,把繁重的cgi/fastcgi任务交给Lighttpd来完毕,那么就会充分利用两者的长处,server的负载也就会下降一个数量级,反应速度也会提高一个甚至是几个数量级。

        作为辛星笔记部分就写到这里吧,之后我会出一个关于server方面的教程的,期待您的关注奥。







       

  • 相关阅读:
    Django_Setings
    python之event【事件】
    python之递归锁【Rlock】
    python之信号量【Semaphore】
    python的线程锁
    python的多线程和守护线程
    python的错误类型和异常处理
    python之ftp作业【还未完成】
    python之socket运用之传输大文件
    python之socket运用之执行命令
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3993724.html
Copyright © 2020-2023  润新知