作者:老王

Lighttpd和PHP的搭配现在越来越常见了。但是老实说,如非必要,我还是推荐你使用Apache和PHP的搭配方式,毕竟LAMP构架的成熟度和稳定度都是经过时间考验的。

那么什么时候Lighttpd和PHP的搭配更值得选择呢?可以从以下几点考虑:如果访问量比较大,硬件资源吃紧,那么Lighttpd适合你;如果和稳定相比,你倾向速度多一些,那么Lighttpd适合你。

Lighttpd的安装,本文就不多说了,大家自己搜索一下就能找到大把大把的教程。这里我们着重讨论一下Lighttpd的配置。

安装好Lighttpd+PHP后,你的配置很可能是类似下面的代码:

fastcgi.server = ( ".php" =>

(( "socket" => "/tmp/php-fastcgi.socket",

"bin-path" => "/usr/bin/php-cgi",

"max-procs" => 10,

"bin-environment" => (

"PHP_FCGI_CHILDREN" => "16",

"PHP_FCGI_MAX_REQUESTS" => "1000"

),

"broken-scriptfilename" => "enable"

))

)

其中,PHP_FCGI_MAX_REQUESTS的作用是在一个子进程工作一定次数后就干掉它,以免可能出现的问题连累系统,主进程会再创建一个相应的子进程来替补,保证子进程数一直是PHP_FCGI_CHILDREN个。

另外还有两个设置选项至关重要,分别是max-procs和PHP_FCGI_CHILDREN。如上所示的配置,系统将创建170个PHP-cgi的进程,它的计算公式如下:

num-procs = max-procs * ( 1 + PHP_FCGI_CHILDREN )

如果一个php-cgi进程占用十几兆内存的话,那么总计大约就要占用2G左右的内存。

我们先来看看max-procs的意思:从字面意思看,它似乎指得是最大进程数。实际它指的是Lighttpd一开始spawn多少个进程。

至于PHP_FCGI_CHILDREN的意思,和字面意思相同,指的就是每个主进程里产生多少个PHPFCGI子进程。

如果你的Lighttpd已经启动,你可以尝试执行一下命令:ps aux | grep php-cgi,将会看到大量的php-cgi进程:

nobody 10939 0.0 0.1 15556 4820 ? Ss 16:24 0:00 /usr/local/bin/php-cgi

nobody 11380 0.0 0.1 15452 5588 ? S 16:24 0:00 /usr/local/bin/php-cgi

仔细观察,你会发现这些php-cgi的状态不尽相同,有的是Ss,有的是S,通过man ps你能找到这些状态的含义:

S Interruptible sleep (waiting for an event to complete)

s is a session leader

也就是说,Ss状态的进程都是主进程(max-procs代表的那些进程),而S状态的进程都是子进程(PHP_FCGI_CHILDREN代表的那些进程)。如果不相信,你可以使用命令核实一下数量:

ps aux | grep php-cgi | grep Ss| grep -v grep| wc -l

确认了这些,我们再仔细看ps aux | grep php-cgi的结果,你还会发现主进程的内存占用(4840)和子进程的内存占用(5588)是不同的。这是因为主进程不处理实际的PHP请求,它唯一的工作就是看管好自己手下的子进程。而实际的PHP请求都是由子进程来完成的,所以子进程占用的内存要稍大一些。

如此,我们对max-procs和PHP_FCGI_CHILDREN的含义应该理解了吧,别急,还有一个问题:既然php-cgi的总进程数可以由上面的公式算出来,那么以下几个配置选项哪个好?

"max-procs" => 1,

"PHP_FCGI_CHILDREN" => "169",

"max-procs" => 2,

"PHP_FCGI_CHILDREN" => "84",

"max-procs" => 10,

"PHP_FCGI_CHILDREN" => "16",

以上三种配置产生的总进程数一样(都是170),我们如何判断配置的好坏呢?

如果使用了eAccelerator之类的PHP优化器,那么eAccelerator会为每一个主进程创建一个独立的缓存空间,这个时候如果你的max-procs是2的话,就会建立两个独立的缓存空间。一方面这浪费了一些内存,另一方面如果你的一个主进程挂了(它下面的子进程就失控了),至少你还有一个主进程可以保持正常运转。

总体来说,max-procs不宜为较小,否则没有容错性,在有PHP优化器的时候也不宜过大,否则会浪费很多内存做缓存空间,即便没有装PHP优化器,max-procs也不宜过大,因为主进程是不处理PHP请求的,过多的主进程自然就是一种浪费。确定了max-procs的值,剩下PHP_FCGI_CHILDREN的值就好说了。

另外:通过命令netstat -anp | grep php-cgi | wc -l可以得知当前有多少php-cgi处于连接状态,如果接近php-cgi的总进程数,就说明应该加大进程数了。

lighttpd跟php,Lighttpd与PHP相关推荐

  1. Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能

    关于mod_xsendfile https://tn123.org/mod_xsendfile/ Lighttpd中的X-sendfile RoR网站如何利用lighttpd的X-sendfile功能 ...

  2. lighttpd 负载均衡-反向代理+cache浅谈

    Lighttpd有硬盘级别的cache-(mod_cache)和内存级别的cache(mod_mem_cache),内存级别的cache是国人的产品,我喜欢用lighttpd就是因为它具有2种选择的c ...

  3. lighttpd+PHP安装

    lighttpd版本:1.4.32 php版本:5.4.11   2013.2.3第一次 php版本:5.4.12   2013.3.14第二次修改 1.lighttpd官网地址 http://www ...

  4. lighttpd安装及secdownload,fastcgi,proxy配置

    1,下载安装lighttpd-1.4.34 lighttpd官网下载最新稳定版本 [root@localhost software]#tar -zxvf lighttpd-1.4.34.tar.gz ...

  5. lighttpd配置支持https

    继前一篇CentOS下安装lighttpd+php后:http://liyaoyi.blog.51cto.com/442933/827200 想在lighttpd中加入https的支持,在学习的过程中 ...

  6. lighttpd缓存配置

    1,首先去下载带缓存模块的lighttpd源代码包 lighttpd-1.4.26.modcache.v.1.8.3-2.tar.gz wget -S http://lighttpd-improved ...

  7. lighttpd php7 源码安装,如何在CentOS 7上安装Lighttpd与PHP-FPM和MariaDB

    Lighttpd是一款安全,快速,符合标准的Web服务器,专为速度至关重要的环境而设计. 本教程将介绍如何在具有PHP支持(通过PHP-FPM)和MySQL支持的CentOS 7服务器上安装Light ...

  8. linux上通过lighttpd上跑一个C语言的CGI小页面以及所遇到的坑

    Common Gateway Interface如雷贯耳,遗憾的是一直以来都没玩过CGI,今天尝试一把.Tomcat可以是玩CGI的,但得改下配置.为了方便,直接使用一款更轻量级的web服务器ligh ...

  9. 用Lighttpd做图片服务器

    http://www.lsanotes.cn/install_lighttpd 用Lighttpd做图片服务器 一.安装lighttpd所需的库文件 1.安装 pcre wget ftp://ftp. ...

  10. linux启动lighttpd服务,如何使用Yum在CentOS和RHEL上安装Lighttpd Web服务器

    Lighttpd是一种适合在生产环境中运行的高性能Web服务器.它是高度优化,安全且非常灵活的Web服务器:与其他Web服务器相比,LightTPD使用的内存和CPU非常低.其事件驱动架构针对大量并行 ...

最新文章

  1. Vue 框架-02-事件:点击, 双击事件,鼠标移上事件
  2. Linux09-网络配置
  3. (DML触发器)如何正确理解触发器的deleted表和inserted表(转)
  4. OO--第三单元规格化设计 博客作业
  5. [转载]C#中各种计时器
  6. c语言程序改频率,求问。这个fft c语言程序 采样的声音频率为多少?
  7. 【转】C# HMAC Sha1 生成签字
  8. Java笔记-使用ServerSocket构建HTTP服务器
  9. layui 传递前端请求_前端请求后端,后端查询完毕传到前端 ,用layui 将 数据分页...
  10. c语言message函数应用,调用input_message的参数太少在主函数中 是神马意思 大神们帮帮我...
  11. 艾宾浩斯遗忘曲线.pdf百日计划表.pdf考研时间计划表.pdf每日打卡.pdf每日复习计划表.pdf详细日计划.pdf月计划表.pdf周计划.pdf
  12. [译]写给初学者的Tensorflow介绍 - 2
  13. 云端编译android,Android原生插件开发云端打包问题
  14. Ubuntu顶栏显示网速和硬件信息
  15. 手机耗电统计app_Android O 新特性:精确统计 APP 电量消耗
  16. QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection
  17. 程序框图与计算机程序,_算法与程序框图_ppt.ppt
  18. smart原则_高效能宝宝养成记之七 SMART原则:梦想与空想只隔一个目标的距离
  19. 单词拼写校正原理及实现(贝叶斯推断)
  20. AliOS Thing正式开源,走近阿里云的物联网技术

热门文章

  1. 用于检验手机号的位数以及检验此手机中是否为中国移动的手机号
  2. 树莓派 Retropie 4.4中文版使用说明 含roms资源
  3. tp801单板微型计算机英文全称,TP801型微型计算机在低压铸造与差压铸造液面加压控制系统中的应用.pdf...
  4. C# 版 EXE捆绑器
  5. JavaWeb登陆界面
  6. WIN7专业版纯净下载:
  7. 随机在数组中抽取两个数据
  8. 360 度测试:Kafka 会丢数据么?其高可用是否满足需求?
  9. 日历之 poj1008玛雅日历
  10. Linux系统启动过程及其修复过程简析(CentOS5、6)