fcgi动态web(apache-httpd的三种模式)

2026-05-13 17:15:01 :0

fcgi动态web(apache-httpd的三种模式)

这篇文章给大家聊聊关于fcgi动态web,以及apache-httpd的三种模式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

apache-httpd的三种模式

***隐藏网址***

新增模块;

mod_proxy_fcgi(可提供 fcgi 代理)

mod_ratelimit(限制用户带宽)

mod_request(请求模块,对请求做过滤)

mod_remoteip(匹配客户端的 IP 地址)

对于基于 IP 的访问控制做了修改,不再支持 allow,deny,order 机制,而是统一使用 require进行

还新增以下几条新特性;

1、MPM 支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能;

--enable-mpms-shared=all --with-mpm=event

2、支持 event

3、支持异步读写

4、在每个模块及每个目录上指定日志级别

5、增强版的表达式分析器

6、每请求配置:《If》, 《Elseif》

7、毫秒级别的 keepalive timeout

8、基于 FQDN 的虚拟主机不再需要 NameVirtualHost 指令

9、支持使用自定义变量

安装时HTTPd 可以添加许多模块

相关模块解析:

--enable-so:支持动态共享模块(即打开 DSO 支持)

--enable-rewrite:支持 url 重写

--enable-ssl:支持 ssl

--with-ssl=/usr/local/openssl:指定 ssl 安装位置

--enable-cgi:启用 cgi

--enable-cgid:MPM 使用的是 event 或 worker 要启用 cgid

***隐藏网址***

空格分隔的模块名列表、all 或者 most,all 表示包含所有模块,most 表示包含大部分常用模

块

--enable-mpms-shared=all:启用 MPM 所有支持的模式,这样 event、worker、prefork 就会以

***隐藏网址***

--with-mpm=event:指定启用的 mpm 模式,默认使用 enevt 模式,在 apache 的早期版本 2.0

默认 prefork,2.2 版本是 worker,2.4 版本是 event.

--with-pcre=/usr/local/pcre:支持 pcre

--with-z=/usr/local/zlib:使用 zlib 压缩库

--with-apr=/usr/local/apr:指定 apr 的安装路径

--with-apr-util=/usr/local/apr-util:指定 apr-util 的安装路径

--enable-expires:激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即

对网站图片、js、css 等内容,提供客户端浏览器缓存的设置。这个是 apache 调优的一个重

要选项之一。

--enable-deflate:提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点。使

用此参数会打打提高传输速度,提升访问者访问的体验。在生产环境中,这是 apache 调优

的一个重要选项之一。

Apache 的优化配置:

apache 所运行的硬件环境都是对性能影响最大的因素,即使不能对硬件进行升级,也最好

给 apache 一个单独的主机以免受到其他应用的干扰。各个硬件指标中,对性能影响最大的

是内存,对于静态内容(图片、javascript 文件、css 文件等),它决定了 apache 可以缓存多

少内容,它缓存的内容越多,在硬盘上读取内容的机会就越少,大内存可以极大提高静态站

点的速度;对动态高负载站点来说,每个请求保存的时间更多一些,apache 的 mpm 模块会

为每个请求派生出相应的进程或线程分别处理,而进程或线程的数量与内存的消耗近似成正

比,因此增大内存对提高动态站点的负载和运行速度也极为有利

其次是硬盘的速度,静态站点尤为突出,apache 不断的在读取文件并发送给相应的请求,

硬盘的读写是极其频繁的;动态站点也要不断的加载 web 程序(php 等),一个请求甚至要读

取十几个文件才能处理完成,因此尽可能的提高硬盘速度和质量对提高 apache 的性能是有

积极意义的。

最后是 cpu 和网络,cpu 影响的是 web 程序执行速度,网络影响流量大小。

apache  的工作模式:

Apache HTTP 服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服

务器。这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫

做工作模式。

Prefork 模式(一个非线程型的):

其主要工作方式是:当 Apache 服务器启动后,mpm_prefork 模块会预先创建多个子进程(默

认为 5 个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork 模块再将

请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求。如果当前的请求数将

超过预先创建的子进程数时,mpm_prefork 模块就会创建新的子进程来处理额外的请求。

Apache 总是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求。这样客户

端的请求就不需要在接收后等候子进程的产生。

由于在 mpm_prefork 模块中,每个请求对应一个子进程,因此其占用的系统资源相对其他

两种模块而言较多。不过 mpm_prefork 模块的优点在于它的每个子进程都会独立处理对应

的单个请求,这样,如果其中一个请求出现问题就不会影响到其他请求。Prefork 在效率上

要比 Worker 要高,但是内存使用大得多不擅长处理高并发的场景。

Apache 在 prefork 工作模式下影响性能的重要参数说明

# prefork MPM

《IfModule mpm_prefork_module》

StartServers 5

#apache 启动时候默认开始的子进程数

MinSpareServers 5

#最小的闲置子进程数

MaxSpareServers 10

#最大的闲置子进程数

MaxRequestWorkers 250

#MaxRequestWorkers 设 置 了 允 许 同 时 的 最 大 接 入 请 求 数 量 。 任 何 超 过MaxRequestWorkers 限制的请求将进入等候队列,在 apache2.3.1 以前的版本

MaxRequestWorkers 被称为 MaxClients,旧的名字仍旧被支持。

MaxConnectionsPerChild 500

#设置的是每个子进程可处理的请求数。每个子进程在处理了“MaxConnectionsPerChild”

个请求后将自动销毁。0 意味着无限,即子进程永不销毁。虽然缺省设为 0 可以使每个

子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内

存泄漏。2、在服务器负载下降的时侯会自动减少子进程数。因此,可根据服务器的负

载来调整这个值。在 Apache2.3.9 之前称之为 MaxRequestsPerChild。

《/IfModule》

注 1:MaxRequestWorkers 是这些指令中最为重要的一个,设定的是 Apache 可以同时处理

的请求,是对 Apache 性能影响最大的参数。如果请求总数已达到这个值(可通过 ps -ef|grep

***隐藏网址***

还剩下很多而 HTTP 访问却很慢的主要原因。虽然理论上这个值越大,可以处理的请求就越

多,建议将初始值设为(以 Mb 为单位的最大物理内存/2),然后根据负载情况进行动态调整。

比如一台 4G 内存的机器,那么初始值就是 4000/2=2000。

注 2:prefork 控制进程在最初建立“StartServers”个子进程后,为了满足 MinSpareServers 设

置的需要创建一个进程,等待一秒钟,继续创建两 个,再等待一秒钟,继续创建四个……如

此按指数级增加创建的进程数,最多达到每秒 32 个,直到满足 MinSpareServers 设置的值为

止。这种模式 可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。

MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个 值,Apache 会自动 kill

掉一些多余进程。这个值不要设得过大,但如果设的值比 MinSpareServers 小,Apache 会自

动把其调整为 MinSpareServers+1。如果站点负载较大,可考虑同时加大 MinSpareServers 和

MaxSpareServers。

注 3:ServerLimit 和 MaxClients(MaxRequestWorkers)有什么区别呢?

是因为在 apache1 时代,控制最大进程数只有 MaxClients 这个参数,并且这个参数最大值为

256,并且是写死了的,试图设置为超过 256 是无效的,这是由于 apache1 时代的服务器硬

件限制的。但是 apache2 时代由于服务器硬件的升级,硬件已经不再是限制,所以使用

ServerLimit 这个参数来控制最大进程数,ServerLimit 值》=MaxClient 值才有效。ServerLimit

要放在 MaxClients 之前,值要不小于 MaxClients。

注 4:查看 Apache 加载的模块

#apachectl -t -D DUMP_MODULES

或

# apachectl -M

或

# apachectl –l (小写 L,只显示静态模块)

***隐藏网址***

看到

注 5:如何修改 prefork 参数和启用 prefork 模式

***隐藏网址***

***隐藏网址***

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

***隐藏网址***

***隐藏网址***

Worker 模式(多线程多进程):

和 prefork 模式相比,worker 使用了多进程和多线程的混合模式,worker 模式也同样会先预

派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会

被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,

因此,内存的占用会减少一些,在高并发的场景下会比 prefork 有更多可用的线程,表现会

更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是

多个线程出现问题,也只是影响 Apache 的一部分,而不是全部。由于用到多进程多线程,

需要考虑到线程的安全了,在使用 keep-alive 长连接的时候,某个线程会一直被占用,即使

中间没有请求,需要等待到超时才会被释放(该问题在 prefork 模式下也存在)

总的来说,prefork 方式速度要稍高于 worker,然而它需要的 cpu 和 memory 资源也稍多于

woker。

Apache 在 worker 工作模式下影响性能的重要参数说明

# worker MPM

《IfModule mpm_worker_module》

StartServers 3

#apache 启动时候默认开始的子进程数

MinSpareThreads 75

#最小空闲数量的工作线程

MaxSpareThreads 250

#最大空闲数量的工作线程

ThreadsPerChild 25

#每个子进程产生的线程数量

MaxRequestWorkers 400

#与 prefork 模式相同

MaxConnectionsPerChild 0

#与 prefork 模式相同

《/IfModule》

注 1:Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的

ThreadsPerChild 线程数,各个线程独立地处理请求。同样, 为了不在请求到来时再生成线

程,MinSpareThreads 和 MaxSpareThreads 设置了最少和最多的空闲线程数;

而 MaxRequestWorkers 设置了同时连入的 clients 最大总数。如果现有子进程中的线程总数不

能满足负载,控制进程将派生新的子进程

MinSpareThreads 和 MaxSpareThreads 的最大缺省值分别是 75 和 250。这两个参数对 Apache

的性能影响并不大,可以按照实际情况相应调节 。

注 2:ThreadsPerChild 是 worker MPM 中与性能相关最密切的指令。ThreadsPerChild 的最大

缺省值是 64,如果负载较大,64 也是不够的。这时要显式使用 ThreadLimit 指令,它的最大

缺省值是 20000。

注 3:Worker 模式下所能同时处理的请求总数是由子进程总数乘以 ThreadsPerChild 值决定

的,应该大于等于 MaxRequestWorkers。如果负载很大,现有的子进程数不能满足时,控制

进程会派生新的子进程。默认最大的子进程总数是 16,加大时 也需要显式声明 ServerLimit

(系统配置的最大进程数量,最大值是20000)。需要注意的是,如果显式声明了 ServerLimit,

那么它乘以 ThreadsPerChild的值必须大于等于MaxRequestWorkers,而且MaxRequestWorkers

必须是 ThreadsPerChild 的整数倍,否则 Apache 将会自动调节到一个相应值。

注 4:进程与线程的区别

线程是指进程内的一个执行单元,也是进程内的可调度实体.

与进程的区别:

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程

有自己独立的地址空间;

(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源

(3)线程是处理器调度的基本单位,但进程不是.

(4)二者均可并发执行.

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对

应用的并发性。

进程和线程的区别在于:

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程

序的运行效率。

Event 模式:

这是 Apache 最新的工作模式,是 worker 模式的变种,它把服务进程从连接中分离出来,一

worker 模式不同的是在于它解决了 keep-alive 长连接的时候占用线程资源被浪费的问题,在

event 工作模式中,会有一些专门的线程用来管理这些 keep-alive 类型的线程,当有真实请

求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并

***隐藏网址***

如何启动一个fcgi的c程序 ,在cherokee服务器中

 CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
  CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等
  什么是FastCGI
  FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
  FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
  FastCGI与CGI特点
  1、如CGI,FastCGI也具有语言无关性.
  2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)
***隐藏网址***
  4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。
  FastCGI的工作原理
  
  1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  
  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
  
  3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  
  4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
  
  在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
  FastCGI的不足
  因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
  
  Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。
  什么是PHP-CGI
  PHP-CGI是PHP自带的FastCGI管理器。
  启动PHP-CGI,使用如下命令:
1
php-cgi -b 127.0.0.1:9000

  PHP-CGI的不足
  1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
  2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)
  什么是PHP-FPM
***隐藏网址***
  PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
  现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去。相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
  PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。

linux下python和webpy怎么搭建

基于python的web开发,这里我们使用linux为开发环境,搭建基于nginx + web.py + fastcgi
有些基本基本概念解释下,哈哈,因为我不懂
1.wsgi为Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
2.uwsgi,另一种python定义的web服务器和web应用的接口
3.REST服务,REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
4.CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能
以下内容主要来自
***隐藏网址***
需要的软件
nginx 0.7以上版本,我使用的是nginx 0.9.2
webpy我使用的web.py-0.37
spawn-fcgi 1.6.3
flup 1.0
nginx的配置请参看官方文档
***隐藏网址***
webpy和flup安装方式为解压后运行python setup.py install
安装编写index.py
点击(此处)折叠或打开
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import web
urls = ("/.*", "hello")
app = web.application(urls, globals())
class hello:
def GET(self):
return ’Hello, world!’
if __name__ == "__main__":
web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
app.run()
注意index.py需要使用命令chmod +x index.py加入可执行权限
将index.py放入/data/www(我所使用的目录你可以修改)
修改nginx.conf配置
index要加入index.py
Nginx的配置加入
点击(此处)折叠或打开
location / {
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9002;
}
使用Spawn-fcgi
spawn-fcgi -d /data/www -f /data/www/index.py -a 127.0.0.1 -p 9002
如果报错为126,说明index.py没有可执行权限
netstat -lnp | grep 9002参考是否启动成功
我运行的实际为
spawn-fcgi -d /data/www -f /data/www/index.py -a 127.0.0.1 -p 9002 -F 2
启动2个进程
启动nginx
浏览器输入地址
成功结束

什么是cgi,fastcgi,php-cgi,php-fpm,spawn-fcgi

什么是CGI
  CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
  CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等
  什么是FastCGI
  FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
  FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
  FastCGI与CGI特点
  1、如CGI,FastCGI也具有语言无关性.
  2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)
***隐藏网址***
  4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。
  FastCGI的工作原理
  
  1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  
  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
  
  3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  
  4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
  
  在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
  FastCGI的不足
  因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
  
  Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。
  什么是PHP-CGI
  PHP-CGI是PHP自带的FastCGI管理器。
  启动PHP-CGI,使用如下命令:
1
php-cgi -b 127.0.0.1:9000

  PHP-CGI的不足
  1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
  2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)
  什么是PHP-FPM
***隐藏网址***
  PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
  现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去。相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
  PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。
  使用PHP-FPM来控制PHP-CGI的FastCGI进程
1
2
3
4
5
6
7
8
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}

--start 启动php的fastcgi进程
--stop 强制终止php的fastcgi进程
--quit 平滑终止php的fastcgi进程
--restart 重启php的fastcgi进程
--reload 重新平滑加载php的php.ini
--logrotate 重新启用log文件

  什么是Spawn-FCGI
***隐藏网址***
  Spawn-FCGI目前已经独成为一个项目,更加稳定一些,也给很多Web 站点的配置带来便利。已经有不少站点将它与nginx搭配来解决动态网页。
***隐藏网址***
***隐藏网址***
***隐藏网址***
  下面我们就可以使用Spawn-FCGI来控制php-CGI的FastCGI进程了

1
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-CGI

  参数含义如下:
  -f 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
  -a 绑定到地址addr
  -p 绑定到端口port
  -s 绑定到unix socket的路径path
  -C 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
  -P 指定产生的进程的PID文件路径
  -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
  PHP-FPM与spawn-CGI对比测试
  PHP-FPM的使用非常方便,配置都是在PHP-FPM.ini的文件内,而启动、重启都可以从php/sbin/PHP-FPM中进行。更方便的是修改php.ini后可以直接使用PHP-FPM reload进行加载,无需杀掉进程就可以完成php.ini的修改加载
结果显示使用PHP-FPM可以使php有不小的性能提升。PHP-FPM控制的进程cpu回收的速度比较慢,内存分配的很均匀。
  Spawn-FCGI控制的进程CPU下降的很快,而内存分配的比较不均匀。有很多进程似乎��分配到,而另外一些却占用很高。可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降。而PHP-FPM合理的分配,导致总体响应的提到以及任务的平均。
  PHP-FPM与Spawn-FCGI功能比较
***隐藏网址***
  PHP-FPM、Spawn-FCGI都是守护php-cgi的进程管理器。

如果你还想了解更多这方面的信息,记得收藏关注本站。

fcgi动态web(apache-httpd的三种模式)

本文编辑:admin

更多文章:


进制转换的8421法(十进制如何转换成8421码~~请说方法)

进制转换的8421法(十进制如何转换成8421码~~请说方法)

大家好,进制转换的8421法相信很多的网友都不是很明白,包括十进制如何转换成8421码~~请说方法也是一样,不过没有关系,接下来就来为大家分享关于进制转换的8421法和十进制如何转换成8421码~~请说方法的一些知识点,大家可以关注收藏,免

2026年5月11日 00:45

线程和进程的区别是什么 面试(linux进程和线程的区别 面试)

线程和进程的区别是什么 面试(linux进程和线程的区别 面试)

各位老铁们好,相信很多人对线程和进程的区别是什么 面试都不是特别的了解,因此呢,今天就来为大家分享下关于线程和进程的区别是什么 面试以及linux进程和线程的区别 面试的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文

2026年1月20日 03:15

rabbitmq最新版本(rabbitmq3.8.2安装步骤及集群配置)

rabbitmq最新版本(rabbitmq3.8.2安装步骤及集群配置)

今天给各位分享rabbitmq3.8.2安装步骤及集群配置的知识,其中也会对rabbitmq3.8.2安装步骤及集群配置进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录rabbitmq3.8.2安装步骤及集群配

2025年11月21日 11:00

易语言源码打开停止工作(同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的)

易语言源码打开停止工作(同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的)

其实易语言源码打开停止工作的问题并不复杂,但是又很多的朋友都不太了解同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的,因此呢,今天小编就来为大家分享易语言源码打开停止工作的一些知识,希望可以帮助到大家,下面我们一

2026年5月15日 01:30

powershell快捷键打开(windows10的控制面板在哪里找)

powershell快捷键打开(windows10的控制面板在哪里找)

本篇文章给大家谈谈powershell快捷键打开,以及windows10的控制面板在哪里找对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录w

2026年8月7日 07:15

oracle数据库完整性(oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决)

oracle数据库完整性(oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决)

各位老铁们,大家好,今天由我来为大家分享oracle数据库完整性,以及oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力

2025年10月15日 22:30

java找不到工作想去送快递了(昌平北大青鸟分享学Java找不到工作的原因)

java找不到工作想去送快递了(昌平北大青鸟分享学Java找不到工作的原因)

今天给各位分享昌平北大青鸟分享学Java找不到工作的原因的知识,其中也会对昌平北大青鸟分享学Java找不到工作的原因进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录昌平北大青鸟分享学Java找不到工作的原因ja

2026年8月6日 10:45

后台管理系统模板如何使用(开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方)

后台管理系统模板如何使用(开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方)

这篇文章给大家聊聊关于后台管理系统模板如何使用,以及开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录开源网店iWeb Shop的模板管理后台怎么操作有什么值得

2025年10月30日 18:15

高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)

高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)

“高级程序设计语言的主要功能”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)!本文目录高级语言的控制结构主要包含什么用高级程序设计语言编写的程序可读性好,是因为什么

2025年12月8日 19:00

mapreduce的优势(hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势)

mapreduce的优势(hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势)

大家好,mapreduce的优势相信很多的网友都不是很明白,包括hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势也是一样,不过没有关系,接下来就来为大家分享关于mapreduce的优势和hadoop与传统的关系型数据

2026年2月12日 15:00

安卓入门开发(安卓如何 初学者必备的安卓入门指南)

安卓入门开发(安卓如何 初学者必备的安卓入门指南)

今天给各位分享安卓如何 初学者必备的安卓入门指南的知识,其中也会对安卓如何 初学者必备的安卓入门指南进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录安卓如何 初学者必备的安卓入门指南安卓程序开发入门Androi

2025年7月29日 11:15

java交互界面怎么做(北大青鸟java培训:常见交互设计表现形式)

java交互界面怎么做(北大青鸟java培训:常见交互设计表现形式)

大家好,java交互界面怎么做相信很多的网友都不是很明白,包括北大青鸟java培训:常见交互设计表现形式也是一样,不过没有关系,接下来就来为大家分享关于java交互界面怎么做和北大青鸟java培训:常见交互设计表现形式的一些知识点,大家可以

2026年3月23日 04:00

18是什么意思?未满18岁者请勿进入 什么意思

18是什么意思?未满18岁者请勿进入 什么意思

“18”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看18是什么意思?未满18岁者请勿进入 什么意思!本文目录18是什么意思未满18岁者请勿进入 什么意思18是什么意思18这个数字代表:成年、青春。18这个数字代表的含义:十

2026年3月15日 00:15

pull together(pull together是什么意思)

pull together(pull together是什么意思)

各位老铁们,大家好,今天由我来为大家分享pull together,以及pull together是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年1月6日 13:30

substantial变形单词(哪些英语单词可以表达 “重要的” 以及它们的区别)

substantial变形单词(哪些英语单词可以表达 “重要的” 以及它们的区别)

这篇文章给大家聊聊关于substantial变形单词,以及哪些英语单词可以表达 “重要的” 以及它们的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录哪些英语单词可以表达 “重要的” 以及它们的区别高中英语选择性必修二单词

2026年1月13日 17:00

持续集成框架(jmeter持续集成为什么要用ant)

持续集成框架(jmeter持续集成为什么要用ant)

各位老铁们好,相信很多人对持续集成框架都不是特别的了解,因此呢,今天就来为大家分享下关于持续集成框架以及jmeter持续集成为什么要用ant的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录jmeter持续集成为什

2025年6月22日 22:15

floor和ceil函数(Math之ceil、floor、round区别)

floor和ceil函数(Math之ceil、floor、round区别)

其实floor和ceil函数的问题并不复杂,但是又很多的朋友都不太了解Math之ceil、floor、round区别,因此呢,今天小编就来为大家分享floor和ceil函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年1月22日 22:30

汉化版eclipse(在汉化版eclipse中编写java程序,无法解析start是什么意思)

汉化版eclipse(在汉化版eclipse中编写java程序,无法解析start是什么意思)

各位老铁们好,相信很多人对汉化版eclipse都不是特别的了解,因此呢,今天就来为大家分享下关于汉化版eclipse以及在汉化版eclipse中编写java程序,无法解析start是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,

2025年8月6日 22:30

interesting怎么读英语(“interesting”怎么读)

interesting怎么读英语(“interesting”怎么读)

其实interesting怎么读英语的问题并不复杂,但是又很多的朋友都不太了解“interesting”怎么读,因此呢,今天小编就来为大家分享interesting怎么读英语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年5月11日 15:45

程序设计语言从机器语言到高级语言的抽象(高级语言的好处)

程序设计语言从机器语言到高级语言的抽象(高级语言的好处)

大家好,程序设计语言从机器语言到高级语言的抽象相信很多的网友都不是很明白,包括高级语言的好处也是一样,不过没有关系,接下来就来为大家分享关于程序设计语言从机器语言到高级语言的抽象和高级语言的好处的一些知识点,大家可以关注收藏,免得下次来找不

2025年11月7日 12:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索