Apache 性能最优化分析(4)
来源:asp之家 发布时间:2010-05-22 18:15:00
但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在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命令是不保险的。


猜你喜欢
- SEOer利用tag进行优化甚至是Spam的历史绝对可算“悠久”了。但利用tag来进行网站优化就真的那么容易吗?你是否在网站信息tag化的进
- 计算网格为那些强大的新型探索工具提供了基础设施,这些基础设施包括桌面计算、智能设备、协作和分布式计算。Globus 项目(Globus Pr
- 六、邮箱管理能力考察邮件服务器的邮箱管理能力时,应该特别注意产品在为用户建立邮箱时的存储方式。目前主要有三种类型:第一种是集中存放。第二种是
- 核心提示:任何行业都存在竞争,SEO领域同样不例外,而且相对来讲网站搜索引擎优化领域显得更加激烈。如果SEO是一场比赛,搜索引擎就好比裁判。
- 内容摘要:从使用虚拟空间到使用独立服务器,这对一个站长来说是一件惊天动地的大事,对于一个没有拿自己电脑做过服务器的站长来说,第一次拿到属于自
- 引言条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起(此时不再占用cpu);另一
- 我使用的VMware版本:VMware 15 Pro镜像:CentOS 8.1电脑配置需求:2 GB 及以上的RAM(官方推荐至少
- 前一阵互联网出了一件新鲜事,有人通过某个在华外企总裁的相册,找到他拍摄的一些女白领的“私隐照片”,好事者通过网络找出了这个外企女白领的真实姓
- 本文主要是介绍linux中误删除程序包恢复实例,小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧。以CentOS
- 这篇笔记是一篇安装教程,没有什么实际的意义,仅为了记录一下……距离上次弄这东西不知道多长时间了,以至于这次再次使用时很是生疏,于是就想着把过
- “大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰……”当年苏轼站在著
- 现在有很多的站长在和别人做友情链接的时候都要考虑对方网站的PR值,有很多新站都找不到友情链接,十分可怜。但我认为找友情链接更应该看对方站长的
- SSH 协议说公钥登陆之前,先来说一下 SSH 协议。SSH 是一种网络协议,我们常说的 ssh 一般指其实现,即 OpenSSH,在 sh
- 近期由于工信部的备案之风的到来,估计苦恼了很多站长,近期也发现很多网站由于没有备案而被关闭。多少站长的血泪呀!服务器IP更改对网站排名影响|
- 目录VMware BurpSuite一、虚拟机镜像和VMware安装和使用二、nmap安装和在虚拟机中使用1.nmap包含四项基本功能:2.
- 国庆60周年刚刚过去,美图秀秀就迎来了自己一周岁的生日,而不知不觉间,我使用美图秀秀的也有大半年了。这半年多的时间里,我看到了美图秀秀的用心
- “Microsoft Security Essentials”(微软安全必备)可以防御运行Windo
- 本文介绍了如何在VMware workstation 14 pro上安装系统,供大家参考,具体内容如下点击创建新的虚拟机选择稍后安装系统,否
- 文章主要记录Ubuntu20.04的简单安装过程,安装后更换国内源,安装openssh软件,启动root权限登录Ubuntu20.04安装安