Lighttpd介绍-程序员宅基地

技术标签: Lighttpd介绍  编程语言--PHP  

Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。

Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能;而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题



 

Security, speed, compliance, and flexibility -- all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd is the perfect solution for every server that is suffering load problems. And best of all it's Open Source licensed under the revised BSD license.

 

 

 为什么使用Lighttpd,从性能方面来说,首先考虑单进程与多进程问题,这也是我为什么不想使用Apache的原因,多进程服务器的惊群问题,简单来说多进程服务(例如Apache)在一个请求发送时候会唤醒所有sleep的进程,但是最终服务的只有一个,在进程数目很多,请求频繁的时候这会造成一个大困扰,系统会忙于切换进程,如果看Top会发现CPU使用在system的比例很高,至于Lighttpd则使用单进程来响应 quest,使用 libevent,poll()作为event handler,如果在linux2.4下,还可以选择rtsig作为event handler。如果不使用大文件(>4G)支持,lighttpd使用sendfile()来发送文件,完全的zero-copy,在这方面性能表现是占优的。同时Lighttpd使用FastCGI来做动态脚本处理,经过实测,在性能表现上也可以接受。

 

    另外就是原先使用Apache的用户迁移成本会比较少,Lighttpd语法与Apache接近,并且核心功能基本实现,我关注的就是 url_rewrite,PHP(这是当然的),alias,custom_log这几个模块,语法接近,并且也同样支持跟cronolog的管道配合日志,所以迁移之后功能都可以实现。另外我比较了Apache和Lighttpd的Suexec方案,虽然目前Lighttpd并没有官方模块来支持这一特性,但是就实现的难度来看,跟 Apache1.3乃至Apache2+MPM差不多……(如果希望安全的使用Apache2+MPM+PHP,一样需要 FastCGI模式)

 

 实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。

 

利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lijieshare/article/details/84817349

智能推荐

viewpager跟HorizontalScrollView,listview冲突的问题_viewpager horizontalscrollview冲突-程序员宅基地

文章浏览阅读2.4k次。这几天做到一个小app,发现一个严重的问题,因为主要布局是一个HorizontalScrollView里面装了个viewpager包含fragment,恰好我有又想实现一个侧边栏,所以发现app运行之后,侧滑栏虽然能够滑动,但是viewpager完全不能用了,不能滑动,就连tablelayout按钮都不能用了,就上网查询了下资料,原来是viewpager和HorizontalScrollView冲..._viewpager horizontalscrollview冲突

1165g7安装linux,Tiger Lake i7-1165G7 Linux性能测试:软件版本组合对跑分影响较大-程序员宅基地

文章浏览阅读512次。通过更多的测试,Michael Larabel 终于得到了一些有趣的发现 —— 可知 Tiger Lake 移动处理器的单线程性能确实有所增强,但多线程性能竟然又低于上周的跑分。从上一篇文章开始,Phoronix 编辑就一直在使用戴尔 XPS 9310(开发人员版)对 Tiger Lake 移动处理器的性能展开密集的测试。从轻负载的 MP3 编码到 Web 浏览器性能测试,某些情况下 i7-116..._i71165g7 乱路由

C语言差异化定价编码,不同平台的差异化会员定价方案-程序员宅基地

文章浏览阅读134次。01·知乎平台给用户提供的会员方案选择。知乎总体分了两大类,还是较为简单的。第一类是连续包。什么是连续包呢,就是选择了以后快到期的时候它会提示你自动续费。知乎-连续包月、包季、包年会员第二类是正常的会员定价。所谓正常,就是想让用户看到时候与第一类的连续包会员做个比较,这第二类比第一类贵了些。知乎-正常的月卡、季卡、年卡会员总结:这样定价的意图还是很明显的,一个是原价,一个是优惠价,肯定很多人选优惠..._不同用户定价

核密度中对窗框h的估计用R语言_R语言与核密度估计(非参数统计)题材.ppt-程序员宅基地

文章浏览阅读436次。R语言与非参数统计(核密度估计) 核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt 1955 和Emanuel Parzen 1962 提出,又名Parzen窗(Parzen window)。 ???假设我们有n个数X1-Xn,我们要计算某一个数X的概率密度有多大。核密度估计的方法是这样的: 其中K为核密度函数, h为设定的窗宽。 核密度估计的原...

matlab2014启动很慢,Matlab启动初始化很慢的解决办法-程序员宅基地

文章浏览阅读385次。首先介绍一下我自己使用的有效方法,一般matlab启动初始化很慢主要的原因是在找注册文件,一般是由于安装了MAC类的软件引起的,所以我按照下文提供的方法“在【目标】中,键入如下内容”$MATLAB\bin\win32\MATLAB.exe”-c “filename>””,我在快捷方式里面目标路径中键入:"C:\ProgramFiles\MATLAB\R2009b\bin\win32\MATL..._matlab r2014a左下角初始化时间很长

定时休眠 linux,Linux中的定时器与休眠-程序员宅基地

文章浏览阅读235次。本文最后更新于2017年8月5日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!=Start=缘由:学习需要正文:参考解答:在 2.4 的内核中,并没有提供 POSIX timer 的支持,要在进程环境中支持多个定时器,只能自己来实现,好在 Linux 提供了 setitimer(2) 的接口。它是一个具有间隔功能的定时器 (interval timer),但如果想在进程环境中支持..._timerfd_settime cpu休眠

随便推点

Oracle错误代码大全_c0244: no matching instance path in var_persistent-程序员宅基地

文章浏览阅读2.3k次。ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换会话 ORA-00022: 无效的会话 ID;访问被拒绝 ORA-00023: 会话引用进程私用内存_c0244: no matching instance path in var_persistent-list

HTML解析和DOM-程序员宅基地

文章浏览阅读794次。概述前面介绍了很多眼花缭乱的新技术,关于渲染,关于硬件加速,关于布局,关于其他很多,同大家一样,我也花了很多时间来消化它们。本章介绍稍微基础些的话题(本系列的写作顺序完全是随心所欲地),就是在渲染整个过程的初始阶段---HTML解析。不过这不表示它简单,其实这里是非常绕人的。在前面描述渲染过程,其实也是回避了这些方面的很多细节,原因也很简单,我自己也没有完全仔细地了解清楚. :-(

第六章——函数(inout参数与变异方法)-程序员宅基地

文章浏览阅读310次。本文系阅读阅读原章节后总结概括得出。由于需要我进行一定的概括提炼,如有不当之处欢迎读者斧正。如果你对内容有任何疑问,欢迎共同交流讨论。在Swift中,初次接触inout关键字以及它的用法,可能会让我们想起C/C++中的指针,但实际上Swift中inout只不过是按值传递,然后再写回原变量,而不是按引用传递:An in-out parameter has a value that is p..._inout函数

php cd 命令无效,如何解决python无法调用cd /d 命令的问题-程序员宅基地

文章浏览阅读650次。如何解决python无法调用cd /d 命令的问题如何解决python无法调用cd /d 命令的问题1.pyimport oscmd = 'cd /d k:/zhusc'res = os.popen(cmd)output_str = res.read() # 获得输出字符串cmd = 'phantomjs test.js'res = os.popen(cmd)output_str = res...._python脚本运行sh命令行 cd无用

mysql5.5.27免安装版配置_mysql5.7免安装版配置-程序员宅基地

文章浏览阅读164次。开始1、下载mysql5.7 32位:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-win32.zip5.7 64位:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip2、解压到自己的目录我这里是放在D:\Program Files\mys..._mysql 5.7mian

TensorFlow训练中保存tensorboard中cupti丢失问题解决_(cupti_callbackfunc)apicallback, this)failed with -程序员宅基地

文章浏览阅读5.1k次,点赞6次,收藏21次。TensorFlow训练中保存tensorboard中cupti丢失问题解决_(cupti_callbackfunc)apicallback, this)failed with error cupti could not be l

推荐文章

热门文章

相关标签