网站运营
位置:首页>> 网站运营>> Apache 性能最优化分析(4)

Apache 性能最优化分析(4)

 来源:asp之家 发布时间:2010-05-22 18:15:00 

标签:apache,性能,优化

但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在select中阻塞。当任何socket上出现一个请求时,所有被阻塞的进程将复苏,并从select返回(苏醒进程的数量取决于操作系统和时间)。它们将继续执行并试图接受这个连接,但只有一个进程会成功(假设目前仍只有一个连接),其余进程将阻塞在accept中。这将把所有失败的进程锁定,使它们只为一个socket上的请求服务。它们会一直被阻塞,直到在那个socket上出现足够的请求把它们唤醒。这一饥饿问题首先在PR#467被提出。至少有两种解决它的方法。

  一种方案是使用非阻塞的socket。这种情况下,accept不会阻塞子进程,它们将会立即返回。但这种方案会造成CPU时间的浪费。假设有十个在select中的空闲进程,而后到来了一个连接请求。九个进程将苏醒、试图接受连接、失败,并返回select,这些进程实际什么都没做。而且如果在这期间,其他socket上出现请求,没有哪个进程会为它服务。总而言之,这种方案不是十分有效,除非您拥有和空闲子进程数目相当的CPU--恐怕不切实际。

  另一种方案被Apache采纳。这种方案串行化(serialize)对内层循环的调用。代码如下所示(改进的部分被加粗显示):

for (;;) {
accept_mutex_on ();
for (;;) {
fd_set accept_fds;

FD_ZERO (&accept_fds);
for (i = first_socket; i <= last_socket; ++i) {
FD_SET (i, &accept_fds);
}
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
if (rc < 1) continue;
new_connection = -1;
for (i = first_socket; i <= last_socket; ++i) {
if (FD_ISSET (i, &accept_fds)) {
new_connection = accept (i, NULL, NULL);
if (new_connection != -1) break;
}
}
if (new_connection != -1) break;
}
accept_mutex_off ();
process the new_connection;
}
 
accept_mutex_on和accept_mutex_off 两个函数实现了互斥量(mutual exclusion semaphore),在任意时刻只能有一个子进程拥有互斥量。多种方法可以实现互斥量。在src/conf.h(1.3版之前)或src/include/ap_config.h(1.3版及以后)可以作出以下选择。一些系统不提供任何互斥方法。在这些系统上使用多个Listen命令是不保险的。

0
投稿

猜你喜欢

  • Blogger.com网站首页截图北京时间3月6日消息,综合海外媒体报道,Blogger.com是全球最大的博客网站,被称为互联网诞生15年
  • 今天上午闲来没事,写了一下自己几年来建站回忆录,发现鱼给加了16分!还差4分就落伍了,干脆在写一下论坛运营和管理上的一些经验! 希望今天就能
  • 9月23日,作为全球最大的中文搜索引擎公司,百度公司在中国互联网协会、中国通信标准化协会指导下发布了国内首个《搜索营销标准与规范》。百度公
  • 很多人谈架构师,其实有两种架构师,一种是业务架构,一种是技术架构。我的经验和教训局限于技术架构,所以本文特指技术架构师。毕业前一年,毕业后7
  • GoDaddy主机帐户的操作系统决定着自己的网站可以使用的脚本语言及网站功能。下面是GoDaddy虚拟主机帐户支持的脚本语言及功能列表:&n
  • 对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来
  • 我做seo已经有些年头多了,做了一些比较成熟的网站,而且所在的网站公司相对来说也是还说的过去的。我现在在阿邦网做网站优化工作。在工作中,我会
  • 个人网站2003年4月7日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一
  • 做站长已经有好几年了,每次都在失望中结束。经过一番冷静思考以后,才知道经营网站不是想象的那么容易,一是需要下功夫,二是需要坚持。下功夫是要懂
  • 理解了活动目录的原理之后,现在我们就可以进行活动目录的安装与配置了,活动目录的安装配置过程并不是很复杂,因为WIN2K中提供了安装向导,只需
  • 两权分立的FTP工作模式,工作环境: ADSL---(219.154.214.150)NAT(10.41.221.2)-----PC(10.
  • 导入链接指的是从外部网站的页面上链回您的网站的链接。导入链接能够给您的网站带来新的用户,而且当这些链接是有价值的、网站编辑自愿选择的链接时,
  • 拨号服务器的维护和管理是关乎服务器端和客户端、涉及软件与硬件的较繁杂的工作。它要求管理员多实践,且善于归纳和总结,只有这样,才能形成一套自已
  • 在搜索引擎的“远古”时代,搜索结果的排列只是以搜索引擎在数据库中找到匹配网页的先后次序排列,但人们很快意识到这种搜索根本是无效的。实际上用户
  • 距离 9 月 23 日,刚好是 Google 的 Chrome Frame 发布一个月的日子,来自各方面对 Chrome Frame 的声音
  • 新做了一个资料类的网站,因为女朋友从事的职业的关系,老是让我给她找资料,也发现了很多资料网站的问题,这里谈一下自己对资料网站的看法:1.既然
  • 一. HTTP压缩概述HTTP压缩是在Web服务器 和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML
  • Windows远程接入服务器允许VPN客户进行身份识别并且透明地连接到内部网络,就像直接连接到网络一样。这能够使用户以安全的方式进行远程工作
  • 并不是所有MySQL都运行在Linux下,windows下也需要做例行备份,下面是用bat脚本做自动化备份的例子,大家可以参考下。remre
  • 一在web2.0几个标志性特征之中,用户是第一位的:一切以用户为中心。不过,web2.0中的用户虽然是第一位的,但不是终极目的,终极目的大部
手机版 网站运营 asp之家 www.aspxhome.com