`
androider
  • 浏览: 748151 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

关于fastcgi的一些摘录

阅读更多

原讨论帖:http://www.iteye.com/topic/267429

 

dango的fastcgi模式有如下几个重要参数:


# protocol=PROTOCOL    fcgi, scgi, ajp, ... (default fcgi)   
#  host=HOSTNAME        hostname to listen on..   
#  port=PORTNUM         port to listen on.   
#  socket=FILE          UNIX socket to listen on.   
#  method=IMPL          prefork or threaded (default prefork)   
#  maxrequests=NUMBER   number of requests a child handles before it is    
#                       killed and a new child is forked (0 = no limit).   
#  maxspare=NUMBER      max number of spare processes / threads   
#  minspare=NUMBER      min number of spare processes / threads.   
#  maxchildren=NUMBER   hard limit number of processes / threads   
#  daemonize=BOOL       whether to detach from terminal.   
#  pidfile=FILE         write the spawned process-id to this file.   
#  workdir=DIRECTORY    change to this directory when daemonizing.   
#  outlog=FILE          write stdout to this file.   
#  errlog=FILE          write stderr to this file.   
#  umask=UMASK          umask to use when daemonizing (default 022). 
 
 protocol=PROTOCOL    fcgi, scgi, ajp, ... (default fcgi)
  host=HOSTNAME        hostname to listen on..
  port=PORTNUM         port to listen on.
  socket=FILE          UNIX socket to listen on.
  method=IMPL          prefork or threaded (default prefork)
  maxrequests=NUMBER   number of requests a child handles before it is 
                       killed and a new child is forked (0 = no limit).
  maxspare=NUMBER      max number of spare processes / threads
  minspare=NUMBER      min number of spare processes / threads.
  maxchildren=NUMBER   hard limit number of processes / threads
  daemonize=BOOL       whether to detach from terminal.
  pidfile=FILE         write the spawned process-id to this file.
  workdir=DIRECTORY    change to this directory when daemonizing.
  outlog=FILE          write stdout to this file.
  errlog=FILE          write stderr to this file.
  umask=UMASK          umask to use when daemonizing (default 022).



很多参数和tomcat中是一样的,主要有一个host,port,socket需要讲解一下,host和port我们知道应该是成对出现的,那么socket是什么呢,其实他们都是socket,只不过,host+port模式是tcp sock,而socket是unix sock,他们都是套接字,一个是操作系统本地的,一个是网络套接字而已。

 

 

 

在django中,lighttpd是不能去控制fcgi进程的产生或者消亡,这些工作都是flup,也就是python manager.py funfcgi 这个命令来产生一个父进程,然后,根据请求由这个父进程来动态的spawn子进程,不过,如果maxspare和minspare如果够大,比如说和maxchilden一样大,都是50 ,那么最大子进程数就是50,最大空闲进程数也是50,最小空闲进程数也是50,这样,父进程就不会不停的销毁和创建子进程了。这样其实也算是避免了动态的spawn

 

 

 

进程没有轻量不轻量的区别,你fork的时候开销都一样大。

所谓父子进程共享数据无非就是copy-on-write而已,这样仅仅可以节省一些物理内存,其他的好处并不大。

mod_rails就是采取这种方式,但这种方式的缺点我前面讲过了。

就我的观察来看,FastCGI进程内存开销最的部分还是内存堆,动辄100-200MB,甚至更多,你copy-on-write节省的共享代码段内存非常有限,也就10-20MB的样子

 

轻量级进程允许父子经常共享在内核中的数据结构,这些数据结构占的空间有限,应该不会有10-20m,所以一个是cow进程,父子进程读相同的物理页,这些fastcgi进程的物理页差不多应该是10m多

 

 

 

 

1、动态spawn进程的缺陷不在于worker进程撑死不撑死,而在于黑客可以很容易的通过瞬间发起大量请求来消耗干净CPU资源,让服务器失去响应,严重的甚至无法远程ssh上去。尽管你可能有一定的spare进程,但是这个在黑客的大量请求面前没什么效果。而静态spawn的好处就在于碰到这种情况最多网站动态请求无法响应,其他一切照常,你有充足的时间查看lighttpd的并发连接情况,找出肇事IP,然后从容的远程ssh上去封掉它。

事实上litespeed也可以通过lsapi来支持Ruby进程的动态spawn,但是经过我测试,是存在上述问题的。当然Apache的mod_rails也存在上述问题,而且更严重一些,特别是像一个比较大型的Rails应用,初始化的过程非常长,要初始化加载的数据很多,启动的时候CPU消耗是非常大的,这就是我为什么抛弃动态spawn的根本原因。

2、动态spawn超出请求数就自动销毁重起我觉得没什么意义

尽管这种自动重起机制可以一定程度上减轻内存泄漏带来的痛苦,但是如果我进程没有内存泄漏,跑的好好的,你干吗非要给我定期重起呢? 所以这种按照计数机制进行定期重起,还远不如我根据资源监控的状况来决定释放重起,如果你进程内存泄漏到一定程度,我就重起你,如果你不泄漏,我自然就不会重起你,这样的机制更合理。

分享到:
评论

相关推荐

    fastcgi-2.4.0安装包

    以下是关于FastCGI安装和配置的一些关键知识点: 1. **安装前准备**:确保你的Linux系统已经安装了必要的开发工具,例如GCC编译器和相关库。这些可以通过运行`sudo apt-get install build-essential`(对于Debian/...

    fastcgi c++

    fastcgi fastcgi fastcgi fastcgi fastcgi

    FastCGI SDK

    通常,这个版本会带来一些新功能、性能优化或者错误修复。开发者在使用时需要按照该版本的文档说明进行配置和编译。 总结来说,FastCGI SDK是一个强大的工具集,它为各种编程语言提供了构建高效Web应用的支持。无论...

    FastCGI 下载FastCGI for IIS6下载 1.5(32位&64位)

    **FastCGI技术详解** FastCGI是一种常用于提高Web服务器性能的技术,它作为一个接口,允许Web服务器与外部应用程序(如PHP解释器)进行高效通信。FastCGI的主要优势在于它可以长时间保持活动状态,避免了每次请求都...

    fastcgi中文手册.pdf

    《FastCGI中文手册》是IT领域中关于Web服务器与应用程序接口的重要参考资料,它详细介绍了FastCGI协议的原理、实现以及应用。FastCGI是一种用于提高动态内容生成速度的技术,它通过持久连接来减少每次请求时的启动和...

    FastCGI For IIS6.0

    相比之下,FastCGI保持了CGI进程的长期运行,使得多次请求可以复用同一进程,显著降低了进程管理的开销,提高了服务响应速度。 FastCGI for IIS6.0是专为Windows Server 2003上的IIS6.0设计的,它允许IIS服务器与...

    mod_fastcgi-2.4.6.tar.gz

    [原创] Redhat 上 FastCGI 安装与配置 软件包 相关软件包: httpd httpd-devel fcgi-2.4.0.tar.gz mod_fastcgi-2.4.6.tar.gz 请仔细阅读其中的README 配置httpd.conf: LoadModule fastcgi_module modules/mod_...

    FastCGI手册

    ### FastCGI手册知识点解析 #### 一、FastCGI技术概述 FastCGI是一种用于提高Web应用程序性能的技术,尤其适用于提高动态网页处理的速度。它通过优化传统的CGI(Common Gateway Interface)模型,解决了CGI效率低下...

    Java的FastCGI网关 jFastCGI

    **Java的FastCGI网关 jFastCGI** 在Web开发中,FastCGI(Fast Common Gateway Interface)是一种常用于提高动态网站性能的技术,它允许Web服务器与后端应用程序进行高效通信。jFastCGI是Java平台上的一个实现,它为...

    fastcgi头文件和库

    标题中的“fastcgi头文件和库”指的是FastCGI接口的开发资源,这通常包括了C语言编程中使用的头文件(header files)和库文件(library files)。FastCGI是一种常用于Web服务器与应用程序之间通信的协议,它提高了...

    nginx-1.14.0.zip_nginx fastcgi

    在配置Nginx以使用FastCGI时,你需要在Nginx配置文件中定义一个location块,指定哪些URL应该通过FastCGI处理。例如: ```nginx location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/...

    Fastcgi 中文参考手册(DOC)

    此外,还有一些开源的 FastCGI 应用程序服务器,如 PHP-FPM(PHP FastCGI Process Manager),专门用于优化 PHP 应用程序的性能。 **FastCGI 的优势** 1. **资源利用率**:减少了进程创建和销毁的开销,降低了...

    Fastcgi学习总结(C/C++语言版)

    FastCGI是一种高性能的Web服务器接口,它是CGI(通用网关接口)的增强版本,旨在解决传统CGI性能上的问题。FastCGI程序能够长时间运行,而不是每次用户请求时都创建新的进程,从而提高了效率并降低了服务器负载。...

    用VC++开发FastCGI+MySQL的基本源代码

    在IT行业中,FastCGI(Fast Common Gateway Interface)是一种用于提高Web服务器性能的技术,它能够使Web服务器与外部应用程序(如动态脚本语言解释器)进行高效通信。FastCGI的核心理念是保持进程常驻,避免每次...

    mod-fastcgi-2.4.6 for apache2.40

    mod_fastcgi是Apache的一个模块,它实现了FastCGI协议,使得Apache服务器能够与FastCGI进程管理器(如spawn-fcgi或fcgiwrap)通信,进而调用动态语言(如PHP、Perl、Python等)的解释器。这个模块提供了比mod_php等...

    windows+IIS 环境下以Fastcgi方式配置php 5.3.3的方法

    下载 Microsoft FastCGI Extension for IIS 5.1 and 6.0,用于启用 Fastcgi 扩展。 步骤 5:配置 FastCGI 扩展 安装 FastCGI 扩展,并配置 fcigext.ini 文件,在文件末尾添加以下内容: [Types] php=PHP [PHP] ...

    Fastcgi 中文参考手册(DOC).rar

    《FastCGI中文参考手册》是一本专注于FastCGI技术的详细教程,旨在帮助开发者深入理解和有效运用这一高效、稳定的Web服务器接口技术。FastCGI是用于提高动态内容生成速度的一种协议,它允许Web服务器与长期运行的...

    IIS FASTCGI安装程序

    用于IIS的FASTCGI模块安装包,版本1.5RC

Global site tag (gtag.js) - Google Analytics