lighttpd默认的并不适合我们的一些应用.因此需要进行修改.编辑/etc/lighttpd/lighttpd.conf文件.
1.事件处理
对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler = "linux-sysepoll"
2.stat() 缓存
stat() 这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(context switches),此项有三个选项:fam,simple(缓存1秒内的stat()),disabled.一般我们较多使用前两项.
在lighttpd.conf加上
server.stat-cache-engine = "fam"
3.网络处理
lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)
server.network-backend = "linux-sendfile"
(linux)
freebsd: freebsd-sendfile
unix: writev
根据平台,可以设置不同的参数.如下所示
all | select | select |
Unix | poll | poll |
Linux 2.4+ | rt-signals | linux-rtsig |
Linux 2.6+ | epoll | linux-sysepoll |
Solaris | /dev/poll | solaris-devpoll |
FreeBSD, ... | kqueue | freebsd-kqueue |
NetBSD | kqueue | kqueue |
4.常连接(HTTP Keep-Alive)
一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
常连接占用文件描述符,对非并发的访问没有什么意义.
(文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30
换言之,lighttpd最多可以同时承受30秒长的常连接,每个连接最多请求128个文件.
但这个默认值确实不适合非并发这种多数情况.
在lighttpd.conf 中减小
server.max-keep-alive-requests
server.max-keep-alive-idle
两个值,可以减缓这种现象.
对于动态程序来说,Keep Alive的意义不大,可以关闭。
server.max-keep-alive-requests = 0
5.启动的进程数
server.max-worker
lighttpd默认只启动一个进程工作,但也支持apache那样启动多个进程,我的实验显示启动多个进程同时工作时并不能提高性能。
6.server.max-fds
因为lighttpd是一个单线程(single-threaded)服务器,它的主要资源限制是文件描述符数目,默认值是1024。如果在一个高负载的站点上,可能你需要通过下面的设定增加这个限定值
server.max-fds = 2048
但这个限定只有在lighttpd做为root身份运行时才能生效。
7.server.max-connections
该项默认等同于server.max-fds
Lighttpd关于本节的优化资料
http://trac.lighttpd.net/trac/wiki/Docs%3APerformance
下面是本站的配置,您可参详一下.
server.event-handler = "linux-sysepoll"
server.stat-cache-engine = "fam"
server.network-backend = "linux-sendfile"
server.max-keep-alive-requests = 4
server.max-keep-alive-idle = 4
server.max-worker = 15
server.max-fds = 4096
server.max-connections = 4096
相关推荐
作为一个高效、安全且配置灵活的开源HTTP服务器,lighttpd在全球范围内被广泛应用,包括Google在内的诸多知名公司都在其基础之上构建了自己的服务。lighttpd1.4.25是这一系列中的一个重要版本,它在性能优化和功能...
2. 高性能:通过优化的事件驱动模型,lighttpd能够快速响应请求,特别适合动态内容较少、静态内容为主的网站。 3. 模块化设计:lighttpd支持多种插件,如FastCGI、SSI、URL重写等,方便扩展功能,同时也便于代码...
lighttpd-1.4.18是lighttpd的一个稳定版本,它在前一版本的基础上进行了多项优化和改进。这个版本的主要特点是: 1. **高性能**:lighttpd采用了高效的多线程模型,能够有效地处理高并发请求,尤其适合动态内容较少...
lighttpd-1.4.59是该软件的一个稳定版本,包含了多项性能优化和安全更新。 二、系统需求 lighttpd可运行于多种操作系统上,包括Linux、FreeBSD、OpenBSD、Mac OS X等。在安装前,请确保你的系统满足以下基本要求:...
总结来说,lighttpd的源码分析不仅涉及网络编程、多线程、内存管理等基础技术,还涵盖了HTTP协议、模块化设计、安全策略等多个领域。理解lighttpd的源码,有助于我们更深入地了解Web服务器的工作原理,提升我们的...
Lighttpd支持多种内容编码和缓存策略,优化了资源传输效率。 6. **安全模块**:包括身份验证、访问控制和防止攻击的机制,如防盗链、速率限制和防止DDoS攻击。 通过对Lighttpd源码的阅读和分析,我们可以更深入地...
通过优化的事件驱动模型,lighttpd能够在高负载下保持良好的性能,这对于需要处理大量并发请求的Web服务来说至关重要。此外,它还提供了缓存机制,可以有效减少服务器对磁盘I/O的依赖,提高整体运行效率。 在安全性...
Web服务器是互联网上运行网站的重要组成部分,常见的Web服务器软件包括Apache、Nginx、Lighttpd等。服务器端优化通常包括但不限于以下几个方面: 1. CPU和I/O优化 CPU作为计算机的核心,其性能直接决定了服务器处理...
首先,**系统环境部署与调整**是优化的基础。通过检查系统日志 `/var/log/messages` 和运行 `dmesg` 命令来确认系统内核是否有错误信息,以及硬件设备是否正常。`ifconfig` 用于检查网络配置,确保网卡设置正确。`...
- **软件优化**:通过使用轻量级的Web服务器如Nginx或Lighttpd替换传统的Apache等,可以显著降低资源消耗并提高响应速度。 - **代码优化**:针对业务逻辑进行代码层面的优化同样重要,例如减少不必要的数据库查询、...
首先,提高服务器并发处理能力是提升Web性能的基础。服务器通过多执行流体系设计,如Apache、Nginx和Lighttpd等,能够同时处理多个请求。选择合适的并发策略,如epoll模型,能够更好地利用CPU、内存和I/O资源,从而...
在本文中,我们将深入探讨 Lighttpd 的内部机制,理解其设计思想,以及如何通过源码分析来优化和定制服务器配置。 一、Lighttpd 的特性与优势 1. 轻量级:Lighttpd 的设计目标是提供高效且低内存占用的服务,尤其...
总的来说,"c web server library" 这个主题涵盖了从基础的Web服务器原理到具体实现(如Lighttpd)、再到高级话题(如源码分析和扩展开发)等多个层次的知识点,对于任何想要深入理解Web服务器工作原理或使用C语言...
4. 性能优化:讨论Lighttpd如何通过内存池、零拷贝技术等手段提高性能。 5. 安全特性:介绍Lighttpd的安全配置,如防止DDoS攻击、限制非法请求和保护服务器资源。 6. 配置文件解析:分析Lighttpd的配置文件格式,...
- `-O1`:基础优化,如删除未使用的局部变量。 - `-O2`:更高级的优化,如循环展开、内联函数。 - `-O3`:最大优化,可能牺牲代码大小换取运行速度。 3. **GCC与Web服务器性能**: - **内联函数**:通过内联...
快速简单PHP扩展安装可选的Composer安装可选PHPUnit安装运行,无需运行额外的运行Alpine基础映像即可使用PHP.earth PHP存储库优化了Docker映像大小多个PHP版本文档提供了有关Docker和PHP配方的文档
了解这些基础知识对于有效地构建、管理和优化电商网站至关重要,确保网站能够高效、安全地为用户提供服务。在实际应用中,开发者应根据业务需求、性能需求以及资源约束,合理选择和配置网站的软硬件环境,以实现最优...
`http_server_base.py`很可能包含了一个基类,这个基类定义了Apache和Lighttpd服务器之间共享的基础功能。在Python中,基类通常用来定义一些通用的接口和方法,子类可以继承这些接口并根据特定服务器的需求进行扩展...
在电商网站开发与管理中,理解网站建设的基础知识至关重要。网站是一个综合性的资源集合,通过超链接将网页、图片、声音、文字、动画、视频等多种媒体形式整合在一起,并且发布在互联网上。它不仅可以单向发布信息,...
至此,Ruby on Rails的基础环境已经搭建完毕。你可以创建一个新的Rails项目并开始开发: ```bash rails new myapp cd myapp ``` 然后配置数据库连接信息(在`config/database.yml`),初始化项目并迁移数据库: `...