关于mod_python和fcgi的比较

35 views
Skip to first unread message

高榕

unread,
Apr 2, 2008, 1:48:53 AM4/2/08
to python-cn
正在用python写一个后台的cgi程序,希望有比较好的效率,我用mod_python已经实现,不过用fcgi还没有实现
看了网络上的文档,python的fcgi好象用
from flup.server.fcgi import WSGIServer
来实现,不过我都一直没成功
我知道fcgi程序很不稳定,很容易造成apache的崩溃,相对来说mod_python比较稳定,不过效率会差点。
大家有没有成功的python的fcgi的例子让我借鉴一下。

realfun

unread,
Apr 2, 2008, 1:50:53 AM4/2/08
to pyth...@googlegroups.com
STFG

在08-4-2,高榕 <mageg...@gmail.com> 写道:



--
http://www.2maomao.com/blog

est

unread,
Apr 2, 2008, 2:03:46 AM4/2/08
to python-cn`CPyUG`华蟒用户组
fcgi很不稳定么?囧

我写了很多个小程序,还没遇到崩溃的情况。可能我的流量比较小吧,呵呵

windows上用flup要修改一段代码 http://initiative.yo2.cn/archives/463297

张沈鹏(电子科大 毕/就业倒计时...)

unread,
Apr 2, 2008, 2:15:22 AM4/2/08
to pyth...@googlegroups.com
http://fastcgi.coremail.cn/index.cn.htm

mod_fcgid是一个跟mod_fastcgi二进制兼容的Apache module。
推荐这个

2008/4/2 est <electr...@gmail.com>:

--
博客:http://zsp.javaeye.com/
个人网站:http://zsp007.com.cn/
电子科大,7月就要毕业了,何去何从...
双学位:生物医学工程+计算机科学与技术
-- 张教主

高榕

unread,
Apr 2, 2008, 2:29:42 AM4/2/08
to pyth...@googlegroups.com
当然是相对来说,因为fcgi是常驻内存的嘛,用python还好,如果用c写的fcgi如果有内存泄露的话就很危险,
张教主把你代码小代码贴上来看看嘛,还有apache的配置。参考一下!


Alec

unread,
Apr 2, 2008, 3:12:10 AM4/2/08
to pyth...@googlegroups.com
高榕 写道:
> 正在用python写一个后台的cgi程序,希望有比较好的效率,我用mod_python已

> 经实现,不过用fcgi还没有实现
> 看了网络上的文档,python的fcgi好象用
> from flup.server.fcgi import WSGIServer
> 来实现,不过我都一直没成功
> 我知道fcgi程序很不稳定,很容易造成apache的崩溃,相对来说mod_python比较
> 稳定,不过效率会差点。
> 大家有没有成功的python的fcgi的例子让我借鉴一下。
fcgi 的好处是可以方便部署到不同的 web server 下, 而用 mod_python
写的程序只能在 apache 下跑,有局限性。
在 Apache 下效率显然是 mod_X 高, mod_python 是预先加载 Python 解释器进
内存并常驻,
使用过程中 import 过的模块也会常驻内存,你说哪个效率会更高呢

--
Regards,
alec


张沈鹏(电子科大 毕/就业倒计时...)

unread,
Apr 2, 2008, 4:56:03 AM4/2/08
to pyth...@googlegroups.com
1.apache本身就是一个性能不好的web服务器,比IIS性能还低,如果要性能,最好的是Nginx,其次是lighttpd

2.前面提到的
mod_fcgid
http://fastcgi.coremail.cn/index.cn.htm

mod_fastcgi
是二进制兼容的
也就是,只要进行文件替换就可以了,配置什么都不用变

3.
fastcgi似乎很久没过更新了(几年?)
而mod_fcgid就更新和大家的评价看来还是不错的
至于其和mod_python性能我也不是很清楚,不过可以去他的maillist问问他的作者.
其作者是一个中国人,所以用中文发帖也是可以的


2008/4/2 Alec <huang...@gmail.com>:

--

cocobear

unread,
Apr 2, 2008, 6:08:36 AM4/2/08
to pyth...@googlegroups.com, zsp...@gmail.com
于 Wed, 2 Apr 2008 16:56:03 +0800
"张沈鹏(电子科大 毕/就业倒计时...)" <zsp...@gmail.com> 写道:

> 1.apache本身就是一个性能不好的web服务器,比IIS性能还低,如果要性能,最好的是Nginx,其次是lighttpd
>

很少见有网站部署Nginx,lighttpd倒是在不少的图片分享网站有布置,不过还是apache占了大多数份额。

apache应该是对各种脚本直接比较好,lighttpd是静态访问速度快,不知道Nginx的优点是什么?

Ben Luo

unread,
Apr 2, 2008, 8:35:28 AM4/2/08
to pyth...@googlegroups.com


2008/4/2 张沈鹏(电子科大 毕/就业倒计时...) <zsp...@gmail.com>:
1.apache本身就是一个性能不好的web服务器,比IIS性能还低,
自己的测试,还是引用别人的话?拿数据说话。

@@

unread,
Apr 2, 2008, 8:51:09 AM4/2/08
to pyth...@googlegroups.com
apache还好吧 呵呵。
 
之前很多做下载的站都是asp的放IIS上 但是提供下载文件的还是用的apache。

 

张沈鹏(电子科大 毕/就业倒计时...)

unread,
Apr 2, 2008, 9:31:42 AM4/2/08
to pyth...@googlegroups.com
http://groups.google.com/group/pongba/browse_thread/thread/5117ce100b11f098/de0327740b9f9a6f?hl=en&q=+%E4%B8%89%E7%A7%8D%E8%AF%AD%E8%A8%80%E7%9A%84%E6%AF%94%E8%BE%83+toplanguage&lnk=ol&
我也是道听途说
来源见上面的链接

不过说这话的人我认识(这个是真的认识,不是网友),对底层非常精通,因为对其的话深信不疑:)

2008/4/2 Ben Luo <ben...@gmail.com>:


>
>
> 2008/4/2 张沈鹏(电子科大 毕/就业倒计时...) <zsp...@gmail.com>:
> > 1.apache本身就是一个性能不好的web服务器,比IIS性能还低,
> 自己的测试,还是引用别人的话?拿数据说话。
>
>
>
> >
>

--

jigloo

unread,
Apr 2, 2008, 9:52:25 AM4/2/08
to python-cn`CPyUG`华蟒用户组
apache或许在静态文件处理上比不过lighttpd,但是不会到连iis都不如的地步。
所谓iis胜过apache,可能是指文件传输的速度iis比apache要好,那是因为iis用了特定的平台api(TransmitFile),使
用了文件系统级的缓存(ntfs.sys)。

On 4月2日, 下午9时31分, "张沈鹏(电子科大 毕/就业倒计时...)" <zsp...@gmail.com> wrote:
> http://groups.google.com/group/pongba/browse_thread/thread/5117ce100b...

vcc

unread,
Apr 2, 2008, 10:14:03 AM4/2/08
to pyth...@googlegroups.com
IIS确实强过Apache,并不是因为使用了什么特别的api,或者文件系统缓存的原因(想想那个文件系统没有缓存功能?服务器拥有的带宽通常都比不过硬盘的读取速度),关键是它从IIS 6.0开始HTTP连接就是用系统驱动在
内核层处理了,所以性能是惊人的,大概只有Linux的内核级的http服务器kHTTPd可以和它比一比。win2008的IIS 7.0更是因为MS重写了整个TCP/IP栈,性能比IIS 6又有了近50%的提升。

vcc

unread,
Apr 2, 2008, 10:25:47 AM4/2/08
to pyth...@googlegroups.com
python的fcgi不要用flup,用libfcgi的python-fastcgi,可以参考以前我写的“在IIS上用fastcgi跑Django” http://hivcc.com/python/fastcgi/ 
非常稳定,没发现任何问题。

jigloo

unread,
Apr 2, 2008, 10:37:36 AM4/2/08
to python-cn`CPyUG`华蟒用户组
原来iis6已经是驱动实现了,那它在win下是无敌了。

高榕

unread,
Apr 2, 2008, 10:54:08 AM4/2/08
to pyth...@googlegroups.com
现在IIS这么NB了!!???
最好能有什么权威的数据验证一下!!

est

unread,
Apr 2, 2008, 5:24:32 PM4/2/08
to python-cn`CPyUG`华蟒用户组
见 http.sys 和 wininet,呵呵

微软家的 wininet blog 还是要经常逛逛,http://blogs.msdn.com/wndp/

On Apr 2, 10:37 pm, jigloo <luxian...@msn.com> wrote:
> 原来iis6已经是驱动实现了,那它在win下是无敌了。
>
> On 4月2日, 下午10时14分, "vcc" <v...@163.com> wrote:
>
>
>
> > IIS确实强过Apache,并不是因为使用了什么特别的api,或者文件系统缓存的原因(想想那个文件系统没有缓存功能?服务器拥有的带宽通常都比不过硬盘的-读取速度),关键是它从IIS 6.0开始HTTP连接就是用系统驱动在
> > 内核层处理了,所以性能是惊人的,大概只有Linux的内核级的http服务器kHTTPd可以和它比一比。win2008的IIS 7.0更是因为MS重写了整个TCP/IP栈,性能比IIS 6又有了近50%的提升。
>
> > ----- Original Message -----
> > From: "jigloo" <luxian...@msn.com>
> > To: "python-cn`CPyUG`华蟒用户组" <pyth...@googlegroups.com>
> > Sent: Wednesday, April 02, 2008 9:52 PM
> > Subject: [CPyUG:45772] Re: 关于mod_python和fcgi的比较
>
> > > apache或许在静态文件处理上比不过lighttpd,但是不会到连iis都不如的地步。
> > > 所谓iis胜过apache,可能是指文件传输的速度iis比apache要好,那是因为iis用了特定的平台api(TransmitFile),使
> > > 用了文件系统级的缓存(ntfs.sys)。
>
> > > On 4月2日, 下午9时31分, "张沈鹏(电子科大 毕/就业倒计时...)"
> > > <zsp...@gmail.com> wrote:
> > >>http://groups.google.com/group/pongba/browse_thread/thread/5117ce100b...
> > >> 我也是道听途说
> > >> 来源见上面的链接
>
> > >> 不过说这话的人我认识(这个是真的认识,不是网友),对底层非常精通,因为对其的话深信不疑:)
>
> > >> 2008/4/2 Ben Luo <ben...@gmail.com>:
>
> > >> > 2008/4/2 张沈鹏(电子科大 毕/就业倒计时...) <zsp...@gmail.com>:
> > >> > > 1.apache本身就是一个性能不好的web服务器,比IIS性能还低,
> > >> > 自己的测试,还是引用别人的话?拿数据说话。
>
> > >> --
> > >> 博客:http://zsp.javaeye.com/
> > >> 个人网站:http://zsp007.com.cn/
> > >> 电子科大,7月就要毕业了,何去何从...
> > >> 双学位:生物医学工程+计算机科学与技术
> > >> -- 张教主- Hide quoted text -
>
> - Show quoted text -

Alec

unread,
Apr 3, 2008, 12:24:28 AM4/3/08
to pyth...@googlegroups.com
est 写道:

> 见 http.sys 和 wininet,呵呵
>
> 微软家的 wininet blog 还是要经常逛逛,http://blogs.msdn.com/wndp/
>
呵呵,快慢这个东西从来都是很难确定的,运行在 linux 内核空间下的 kHTTPd
肯定比 linux 下的其他运行在用户空间的webserver快,但运行在 Windows 内核
下的 IIS 并非意味着一定比他们快和稳定。 apache 默认情况下是很慢的,
因为他的传统进程模型(prefork)和历史原因他比较大和繁杂,减少不必要的 module
和良好的配置,加上使用worker/event之类的 MPM 可以大大提高效率,
现在 event MPM 支持epoll 和 kqueue, 可以在一定程度上追赶 nginx/lighttpd
的速度

--
Regards,
alec


Kelvin Liang

unread,
Apr 3, 2008, 1:54:03 AM4/3/08
to python-cn`CPyUG`华蟒用户组
说的有道理。

Apache的prefork真的有点太老了,虽然很稳定,但是一旦并发数上去了,会占用大量的内存,很容易出问题,对Dos攻击的防御能力很
差。Nginx和Lighttpd之类的server,采用了更合理高效的io模式,承载能力有了很大的加强。比如Nginx,如果有上万个
ESTABLISHED的链接,也只会消耗很少的内存。换Apache早就完蛋了。

说到mod_python和fastcgi,我是推荐使用fastcgi的模式。mod_python虽然大家都说它稳定,但是如果你的Apache还
要跑mod_php,mod_jk,那就很难说了,内存占用的多,互相的影响也很难说。fastcgi就好多了,各跑各的,web server负责静
态文件,动态请求都由后端的fastcgi进程处理。

在可能的情况下,我建议不管python或者php最好都跑fastcgi模式。而且,抛弃apache吧,Nginx和Lighttpd会做的更
好。

我维护的一个Django系统,原来用Apache mod_python,大概能应付200并发,后来改成Nginx
+fastcgi(Django runfcgi,prefork模式,最大64个进程),现在能应付700以上的并发,每天处理动态pv 2000w
以上。

无所谓

unread,
Apr 3, 2008, 3:49:27 AM4/3/08
to python-cn`CPyUG`华蟒用户组
django系统每天pv2000w,链接show一下?
> > alec- 隐藏被引用文字 -
>
> - 显示引用的文字 -

@@

unread,
Apr 3, 2008, 3:52:45 AM4/3/08
to pyth...@googlegroups.com
对对 呵呵。。

魏中华

unread,
Apr 3, 2008, 5:13:56 AM4/3/08
to python-cn`CPyUG`华蟒用户组
>>我维护的一个Django系统,原来用Apache mod_python,大概能应付200并发,后来改成Nginx
+fastcgi(Django runfcgi,prefork模式,最大64个进程),现在能应付700以上的并发,每天处理动态pv
2000w
以上。

厉害啊,给个链接,努力学习学习

高榕

unread,
Apr 3, 2008, 5:23:26 AM4/3/08
to pyth...@googlegroups.com
总共有几台机器啊,不会就一台吧?

Kelvin Liang

unread,
Apr 3, 2008, 10:46:11 AM4/3/08
to python-cn`CPyUG`华蟒用户组
这是一个广告联盟系统。
包括网站主自服务系统,广告管理系统,投放系统,统计结算系统,防作弊系统。
其中投放系统和所有的管理系统都是Django开发的。数据库是MySQL。
峰值的时候大概每秒处理4-500个动态请求,400多个静态文件请求。
其他的一些服务程序也是用Python写的。
全部服务都是跑在一台PC Server上(双4核至强,4G内存,Linux 2.6)。

这个系统的动态请求也比较简单,根据广告代码、网站代码和投放规则(都存在数据库里),生成广告显示内容。同时记录显示、点击等数据。数据访问用的是
sqlalchemy,加了一些缓存。因为规则比较固定,缓存命中率很高,所以大家也不要奇怪2000w这个数据。事实上,这个服务器加上一大堆其他的
后台服务,处理能力还很有余量。
> > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -
Reply all
Reply to author
Forward
0 new messages