apache配置

httpd.conf文件中的主要配置参数:

ServerType                               //服务器的两种类型为standalone和inetd
ServerRoot                             //设置服务器目录绝对路径,包含conf和log子目录
Pidfile                                        //服务器用以记录开始运行时的进程ID号的文件
KeepAlive off                          //设置是否运行保持连接,off表示不允许
ServerAdmin                        //设置为管理服务器的Web管理人员的地址
ServerName                           //设置服务器将返回的主机名
DocumentRoot                      //设置为文档目录树的绝对路径
UserDir                                   //定义和本地用户的主目录相对的目录
DirectoryIndex                       //指明作为目录索引的文件名
TimeOut                                 //设置超时时间,以秒为单位,默认为120秒
MaxSpareServers                  //设置Apache的最大空闲进程数
StartServers                           //指明启动Apache时运行的进程数
MaxKeepAliveRequests           //设置每个连接的最大请求数,默认为100,设为0则没限制
KeepAliveTineout                 //指定连续两次连接的间隔时间,默认为15秒
Listen                                    //设置Apache的监听端口,默认在TCP80端口监听客户端请求
BindAddress                        //设置Apache只监听特定的IP地址
LinitRequestBody                  //设置HTTP请求的消息主体的大小
MaxClients                           //设置Apache在同一时间的最大连接数

 

nagios监控前端apache 80端口,同时也有监控后端webserver的端口,偶尔会出现apache端口超时的报警。但是后端服务器响应正常。基本上确定问题出现在apache上。

登陆到机器上检查问题,通过以下几点基本上能确定问题所在了。

  • 系统负载正常,cpu利用率正常。
  • 内存已经被分配殆尽。
  • ps -ef | grep httpd | wc -l ,看到已经有1024个进程,已经达到配置文件中maxclient的限制。

所以问题应该是并发访问量比较高,导致进程数已经达到配置中的限制。由于配置了长连接而且时间比较长15秒,所以在高并发的访问环境中导致没有空闲的进程来接收新的访问。这个时候访问就需要等待了。所以nagios会报超时。
分析下日志统计出每个访问基本上在5秒内就没有连续的请求了,因此把keepalivetimeout时间改成5秒。
然后reload配置文件。 apachectl -k graceful
对于几个apache的配置不是特别清楚特意记录一下。

TimeOut 指令

说明 语法 默认值 作用域 状态 模块
服务器在断定请求失败前等待的秒数
TimeOut seconds
TimeOut 300
server config
核心(C)
core

TimeOut指令用于设置Apache等待以下三种事件的时间长度:

  1. 接受一个GET请求耗费的总时间。
  2. POST或PUT请求时,接受两个TCP包之间的时间。
  3. 应答时TCP包传输中两个ACK包之间的时间。

我们计划在发展里程中,逐步把它们分别变得更易配置。计时器在1.2版本之前的默认值为1200,而现在已经设置为300了,但对于绝大多数情况来说仍是足够的。没有把它默认值设的更小的原因在于代码里还有点问题:有时发送一个包之后,计时器没有复位。

KeepAliveTimeout 指令

说明 语法 默认值 作用域 状态 模块
持久链接中服务器在两次请求之间等待的秒数
KeepAliveTimeout seconds
KeepAliveTimeout 5
server config, virtual host
核心(C)
core

Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。

对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

 

你可能感兴趣的:(apache)