Chinaunix首页 | 论坛 | 博客
  • 博客访问: 586497
  • 博文数量: 201
  • 博客积分: 3076
  • 博客等级: 中校
  • 技术积分: 2333
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:44
文章分类

全部博文(201)

文章存档

2010年(118)

2009年(83)

我的朋友

分类:

2010-07-22 17:19:59

Apache的限制

Ø 每次请求一个进程, 导致频繁fork

Ø 频繁fork占有很多系统资源;

Ø 对于并发数的支持不多;

Ø 不易扩展性,很难功能扩充;

Ø 频繁执行CGI需要每次从文件中load


HTTPSVR:

每个CGI子进程都会起一个线程来运行CGI的动态库,另一个主线程主要用来接收来自http服务器的请求,主线程在接收到整个完整的包之后,只对http的包头进行分析和设置环境变量,然后把httpcontent通过管道的方式传给另一个线程的CGI

这种处理方式有两个问题:一个是多线程使得CGIHost在多并发的情况下,CPU切换过于频繁;第二是主线程在接收整个http之后,只对http的包头进行处理,对http包的content不做任何处理只是起到转发的作用,这样做也会使得系统对数据拷贝过于频繁,影响CGIHost的处理效率,消耗系统性能。

针对这种情况,平台架构组提出了一个解决方案,其主要思想就是:把CGI的执行程序编译成一个动态SO库,在Server启动的时候把CGI加载到内存,从而减少把CGI程序加载进内存的系统开销,每次请求的处理只需要对内存进行操作,以此来提高请求的处理能力。



QZhttp:

改进方案主要集中在简化处理过程,降低CPU和内存消耗上面:对于每个CGI的请求,最好能够利用一个单进程来处理,减少CPU的切换,这样逻辑更加清晰,调试维护更加方便。

阅读(615) | 评论(0) | 转发(0) |
0

上一篇:多进程 VS 多线程

下一篇:http/1.1 protocol

给主人留下些什么吧!~~