如何解决访问Apache 80端口出现超时的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决访问Apache 80端口出现超时的问题相关的知识,希望对你有一定的参考价值。

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指令用于设置Apache等待以下三种事件的时间长度:
接受一个GET请求耗费的总时间。
POST或PUT请求时,接受两个TCP包之间的时间。
应答时TCP包传输中两个ACK包之间的时间。
我们计划在发展里程中,逐步把它们分别变得更易配置。计时器在1.2版本之前的默认值为1200,而现在已经设置为300了,但对于绝大多数情况来说仍是足够的。没有把它默认值设的更小的原因在于代码里还有点问题:有时发送一个包之后,计时器没有复位。
Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。
对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。
参考技术A 如果是访问量太高,由高并发引起的超时现象,也就是服务器处理不过来了,则不建议使用apache。apache的单链接资源消耗太大,建议改用nginx

烈奕联 lieyilian dot com

解决wampserver,apache开启虚拟主机localhost无法访问

http-vhost.conf:

# Virtual Hosts

#

# Required modules: mod_log_config


# If you want to maintain multiple domains/hostnames on your

# machine you can setup VirtualHost containers for them. Most configurations

# use only name-based virtual hosts so the server doesn‘t need to worry about

# IP addresses. This is indicated by the asterisks in the directives below.

#

# Please see the documentation at 

# <URL:http://httpd.apache.org/docs/2.4/vhosts/>

# for further details before you try to setup virtual hosts.

#

# You may use the command line option ‘-S‘ to verify your virtual host

# configuration.


#

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for all requests that do not

# match a ServerName or ServerAlias in any <VirtualHost> block.

#


######################################

# <VirtualHost *:80>

#    ServerAdmin [email protected]

#    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"

#    ServerName dummy-host.example.com

#    ServerAlias www.dummy-host.example.com

#    ErrorLog "logs/dummy-host.example.com-error.log"

#    CustomLog "logs/dummy-host.example.com-access.log" common

# </VirtualHost>


# <VirtualHost *:80>

#    ServerAdmin [email protected]

#    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"

#    ServerName dummy-host2.example.com

#    ErrorLog "logs/dummy-host2.example.com-error.log"

#    CustomLog "logs/dummy-host2.example.com-access.log" common

# </VirtualHost>


<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot "d:/apachewww/"

    ServerName localhost

    ServerAlias localhost

    ErrorLog "logs/dummy-host.localhost-error.log"

    CustomLog "logs/dummy-host.localhost-access.log" common

</VirtualHost>


<VirtualHost *:80>

    DocumentRoot "D:/apache/www/"

    ServerName cms.local.com

</VirtualHost>




以上是关于如何解决访问Apache 80端口出现超时的问题的主要内容,如果未能解决你的问题,请参考以下文章

问题:nginx 如何处理301 ?

apache和nodejs共享80怎么设置?

IIS和APACHE如何共用80端口?

解决安装XAMPP 浏览器输入localhost 出现404错误的问题

Linux系统下的80端口公网无法访问。

内网中有两台服务器,服务器A为APACHE占用80端口,服务器B为IIS占用8080端口,如何通过80端口访问不同服务器