为什么在本地主机上的响应如此缓慢?


59

我正在为我的一个朋友开发一个小的PHP项目,并且为本地开发设置了WAMP环境。我记得本地Apache 2.2响应迅速的日子。las,既然我从一个漫长的假期中回来,我发现localhost痛苦的反应很慢。

送出300B HTML页面大约需要5秒钟。

当我查看任务管理器时,httpd进程(2)占用了0%的CPU,并且我的计算机总体上没有负载(0-2%的CPU使用率)。

为什么延迟这么高?是否有任何我可以调整的Apache设置,可以使其线程以更高的优先级运行?似乎在提供响应之前只是在睡觉。


1
localhostDNS方面正确解决了吗?ping localhost应该立即与一起回来127.0.0.1
AlexisLê-Quôc09年

该工作在<1毫秒接收到的精细,响应
彼得Perháč

我以为firefox可能是问题所在,但即使在IE中也需要5s,因此必须是某些系统设置或Apache设置或gremlins。
PeterPerháč09年

2
请求静态内容(即加载时http://localhost/index.html)是否具有相同的行为?如果不是,则可能是PHP问题,而不是Apache问题。
Marcus Spiegel

5
这个问题的众多答案表明,有数十种(甚至数百种)不同的原因导致页面请求很慢。如果您由于页面请求速度太慢而遇到了这个问题,则需要在此之前找到更慢的原因,然后才能找到有用的答案。 strace并且tcpdump是有用的工具。
拉达达达(Ladadadada)2012年

Answers:


59

对我而言,将ServerName属性设置为httpd.conf固定的延迟(最坏的延迟时间为10秒):

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName 127.0.0.1:80

12
这项工作-希望我能投票两次
霍纳2012年

8
这也为我解决了!从10s延迟变为2ms!
DouglasHeriot

我奋斗了几个小时,这就是解决方案。
williamcarswell 2013年

1
如果localhost解析正确,为什么这是一个问题?在响应之前的10秒中发生了什么?等待某处超时?
milan 2014年

3
@Elipticalview正如文件中的注释所示;If your host doesn't have a registered DNS name, enter its IP address here.
sshow 2014年

21

我有同样的问题。

在hosts文件中将localhost重定向设置为127.0.0.1并没有帮助。优化MySQL服务器没有帮助(InnoDB-> MyISAM,更改了my.ini中许多与缓存相关的指令)。

然后,我使用了web webgrind并将问题缩小为“ new PDO(...)”调用。改变中

mysql:host=localhost;dbname=dp-ui;charset=utf8 

mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8

在dsn for PDO中完全解决了该问题!页面加载时间从3000毫秒增加到16毫秒

但是我真的很困惑,为什么hosts文件中的“ 127.0.0.1 localhost”行没有帮助。


3
有人可以告诉我应该编辑哪个文件才能使其正常工作吗?
2013年

1
您应该编辑连接数据库的行(在PHP脚本中)。例如,改变路线:$link = new PDO('mysql:host=localhost;dbname=dp-ui;charset=utf8');$link = new PDO('mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8');
米哈尔科

我最近正在研究EXT-JS应用程序,但MYSQL数据查询存在一个巨大的问题,即响应时间太长。MYSQL基本上太慢了。谢天谢地,在这里得到了答案.....刚在连接脚本中将我的主机从以下位置更改:host = localhost; 到主机= 127.0.0.1我的服务器响应从3分钟(180秒)减少到不到1秒。非常感谢。
2013年

这解决了我的问题。奇怪...我没注意到SQLite中的问题
Mladen Janjetovic

2
对我来说也一样,但仅适用于WordPress。必须在wp-config.php中将“ localhost”替换为“ 127.0.0.1”
Adrian

20

问题出在Apache的主要设置文件上httpd.conf

我找到了这个:

可以通过三种方式设置PHP以在Windows上与Apache 2.x一起使用。您可以将PHP作为处理程序,CGI或FastCGI运行。 [资源]

因此,我进入了Apache的设置,并看到了问题所在:我将其设置为CGI,而不是将其作为模块加载。php-cgi.exe每次我提出请求时,这都会导致启动和关闭。这减慢了我的localhost发展速度。

我更改了设置以将PHP加载为Apache MODULE,现在一切正常。:)

要为Apache 2.x加载PHP模块:

1)将以下行插入 httpd.conf

LoadModule php5_module "c:/php/php5apache2.dll"

AddHandler application/x-httpd-php .php

(ps更改C:/php为您的路径。此外,将php5apache **。dll更改为现有文件名)

2)要限制仅对.php文件执行PHP,请将其添加到httpd.conf

<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

3)在其中设置php.ini的路径httpd.conf(如果重新启动后出现错误,请再次删除此行)

PHPIniDir "C:/php"

谢谢大家的努力。


2
我的Apache停止添加源代码中提到的行。在Windows中该怎么办?
AgA 2013年

该链接已过期。使用这个:goo.gl/2EVth9
T.Todua '16

7

我遇到了同样的问题,并最终发现它来自两个事实:

  1. 我使用Mac OS X Mavericks
  2. 我通过URL访问我的项目http://myproject.local/,因为我把线127.0.0.1 myproject.local/etc/hosts

出现问题.local是因为tld是为Bonjour服务保留的,而这是自Mac OS X Lion(10.7)起。

更改tld来解决其他问题。


6

检查是否/etc/hosts正确。像这样:

# hostname mobrglnx1 added to /etc/hosts by anaconda

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 *****

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *******

在该位置输入****您的主机名。


对我来说就是这样。我的域设置在ipv4行中,但没有设置在ipv6中。
拉斐尔·贝克尔2015年

我也是。在我将额外的行放入/ etc / hosts之前,请求花费了5秒钟以上。现在我的资料可以在大约0.1秒内运行。
mwallisch 2015年

让我朝正确的方向前进。已添加127.0.0.1 something.atmy.localhost,现在请求不再需要20秒。而是本地apache立即响应。对网络了解不多。我猜域名解析太慢了,因为配置不正确。
罗布(Robsch)

4

httpd.conf务必进行设置HostnameLookups Off


6
我似乎没有apache.conf文件,我也在所有文件中搜索了HostnameLookups指令,并在core.html.en手动文件中找到了它。它说默认情况下
处于

3

万一它对任何人都有帮助,我就会遇到这个问题,并且归结为不正确的DNS查找

服务器上的DNS服务器设置为127.0.0.1-我将其更改为使用Google Public DNS服务器,这使整个堆变得更快。


2

这个问题的标签为apache-2.2,但是如果有人在Apache 2.4 + PHP 5.5的WAMP上也受到此恶性问题的影响,那么以下关于SO的答案对我有用:

httpd.conf通过注释以下行来编辑和禁用CGI模块的加载 :LoadModule cgi_module modules/mod_cgi.so

https://stackoverflow.com/a/18786773/260080

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.