WAMP/XAMPP在本地响应非常缓慢

140

我不知道问题出在哪里。WAMP非常慢,所以我重新格式化了电脑并安装了WAMP。然而,访问 localhost 仍然非常、非常慢,有时甚至根本无法加载。我甚至将其替换为 XAMPP,但结果仍然相同。可能的问题是什么?这是我的当前 hosts 文件:

127.0.0.1       localhost

127.0.0.1       localhost

以前一切都很完美,但我不知道发生了什么,为什么最近它变得奇怪了,即使重新格式化也无法修复。


4
我也遇到了同样的问题。 问题出在Apache的主配置文件httpd.conf上。参考此链接获取适用于我的解决方案:http://serverfault.com/questions/66347/localhost-response-very-slow-why - Jitendra
我在htpd.conf中添加了LoadModule php5_module "C:/xampp/php/php5apache2_2.dll",并重新启动了它,但是没有任何帮助。 - FBwall
你好,您是否安装了最新版本的XAMPP或者运行了任何框架?此外,您不需要在hosts文件中两次使用127.0.0.1 localhost这一行,请尝试删除其中一个。 - cowls
@所有人,我有一个问题,针对那些提出使用添加或替换文本为127.0.0.1的解决方案的人:如果您访问127.0.0.2127.1.2.3或其他环回地址会发生什么?例如,如果MySQL绑定到127.0.0.2,在Apache配置文件中硬编码127.0.0.1仍然有效吗? - Synetech
以管理员身份运行XAMPP对我有效。 - Rosário Pereira Fernandes
显示剩余2条评论
27个回答

119

我在运行64位Windows 8时遇到了同样的问题。Apache非常缓慢,但是按F5多次后就正常了。最终,我尝试了很多方法才成功解决问题。现在它工作得很快。

尝试以下任务以提高性能:

更改Apache的侦听端口

将侦听端口从80更改为8080,以避免与Skype等程序的冲突。打开httpd.conf文件并找到以Listen开头的行(大约位于第62行左右)。更改如下: Listen 127.0.0.1:8080

enter image description here

更改电源计划

将电源计划从“平衡”更改为“高性能”。您可以在控制面板\所有控制面板项\电源选项中完成此操作

enter image description here

禁用IPv6

这个特定任务的功劳归给Jef,他在他的博客文章中指出了这一点。从Windows 8桌面,同时按Windows键R键

enter image description here

在运行对话框中键入regedit并单击“确定”

enter image description here

使用注册表编辑器展开注册表树并浏览到:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\Parameters

右键单击 Parameters,展开 New,并选择 DWORD (32-bit)

enter image description here

Name 字段中输入 DisabledComponents

enter image description here

双击新的 DisabledComponents 值,将 ffffffff 输入到 Value data 对话框中,然后点击 OK 按钮

enter image description here

确认新的注册表值包含所需数据

enter image description here

更改你的 etc/hosts 文件

如果使用虚拟主机,则不要将每个虚拟主机添加到新行上。而应该像下面这样列出它们。 127.0.0.1 site-a site-b site-c

我还添加了 127.0.0.1 127.0.0.1,因为我听说这可以提高查询的效率(无法确认,但是加上也没有坏处)

enter image description here

你的 hosts 文件位于 C:\Windows\System32\Drivers\etc

检查运行了多少个 Apache 进程

在我的情况下,我有两个 Apache 进程正在运行。确保只有一个进程在运行。你可以按下 CTRL+ALT+DEL 并点击 Task Manager 来检查这一点

enter image description here

关闭基础筛选引擎(BFE)

我发现将基础筛选引擎关闭也起到了一定的作用。由于停止或禁用 BFE 服务会显著降低系统的安全性,因此只有在需要时才应这样做。

进入 控制面板 => 管理工具 => 服务 => 基础筛选引擎

enter image description here

通过点击 Stop 来停止基础筛选引擎

enter image description here

提高 Apache 的进程优先级

前往任务管理器,右键点击Apache后选择“设置优先级”并将其从“普通”更改为“高”。 enter image description here

让Apache进程保持繁忙

这是一个比较不好看的方法,但它确实有效。它可以使Apache保持繁忙状态,并且可以更快地处理您自己的请求。在iframe位置中插入本地Web地址并保存为HTML文件,运行它并将其保留到完成操作为止。

<html>
    <head>

<script>
setTimeout(function(){
   window.location.reload(1);
}, 2000);

</script>

</head>
<body>
<iframe name="iframe" id="iframe" src="http://mywebsite:8080"></iframe> 


</body>
</html>

降级到Windows 7 Pro

作为Windows 8 Pro用户,您有权降级到Windows 7。 在这里了解更多信息。对我来说,这是唯一真正有效的解决方案。


7
这是一组很好的答案,唯一有效的方法就是禁用IPv6,这就是我所做的,也是对我有用的,非常感谢 ;) - AgelessEssence
24
我还添加了127.0.0.1 127.0.0.1。这甚至不是HOSTS文件的有效语法;您无法重新映射IP地址。检查有多少个apache进程正在运行。在我的情况下,我有两个apache进程正在运行。确保您只有一个正在运行。什么?你应该有两个httpd.exe实例;这是预期和正常的。第二个是负责主要工作的worker,而第一个仅是监视器,如果worker崩溃,则可以重启worker。您只会在调试模式下获得一个,而这并不适合常规使用。 - Synetech
所有这些东西可能是无效的、不规则的等等,但至少它可以让Apache跑得更快。你需要等待十秒钟才能加载页面也并非预期,但在Windows系统中是常见的。最终,如果您不介意系统中存在的错误,转向Mac或Ubuntu可能会更好。 - bicycle
1
@MartinAsenov:如果只是Skype的话,那很好办,可以轻松将Skype重定向到另一个端口。但我有一些其他程序(如Dropbox)的80端口问题,这不太容易移动到另一个端口。 - Pavel V.
优先处理 httpd.exe 可以解决这个问题。 - Matt
显示剩余12条评论

99

这是由IPV6引起的。以下是让MYSQL不使用它的方法(因此,不禁用IPV6)。

编辑mysql文件“my.ini”

[wampmysqld][mysqld]下添加以下内容:

bind-address = ::

保存文件并重新启动mysql服务

享受吧!


3
太好了!我本来只给你的答案有5%的帮助概率,但它真的有用!谢谢。 - AndiPower
5
谢谢,速度明显提高了很多……由于我正在使用XAMPP,我已将其添加到[mysqld]下。 - Sabeer
3
这个技巧对我非常有帮助,它可以让我的MySQL服务器快近100倍。如果你使用的是WAMP或XAMPP,只需要取消“bind-address = ::”这一行前面的#号即可。 - Aldry Wijaya
2
我使用这个更新了xampp的my.ini文件,我的本地主机变得飞快了!!!向你干杯!!! - Biju P Dais
1
尽管上面有很多详细的内容(其中大部分是我自己做的,除了关闭BFE和其他看起来不好的东西),但这个才是有效的。在我的my.ini文件中,在[mysqld]下已经有一个指向127.0.0.1的bind-address条目。我将其更改为::,现在phpmyadmin的结果立即显示,而不是需要10到20秒的等待时间。 - not_a_generic_user
显示剩余5条评论

56

2
这将使请求时间加快约80%。为什么在Windows 8下使用localhost连接MySQL时PHP如此缓慢? - wowpatrick
1
这对我没有起作用 :( 我知道它曾经修复过一次,但出于某种原因现在不起作用了,很遗憾。 - Benno
它将响应时间降低到了Windows 8.1上的20%。感谢您的答案。与wowpartick的问题相同。 - Ejaz
太好了 - 它将请求时间从1.03秒减少到约15毫秒。谢谢!(使用win8.1 64位) - user2345998
我曾经遇到过同样的问题,我的电脑是Windows 8系统,当我在本地主机上打开phpMyAdmin时,一个小表格(29k行)需要无限长的时间才能加载完毕。但是,当我将URL地址栏中的地址更改为127.0.0.1后,它立即加载完成了。这非常奇怪。 - luky
显示剩余2条评论

48

在我的情况下,当php.ini中禁用此项时,加载时间快了5倍:

;zend_extension = "\xampp\php\ext\php_xdebug-2.1.0-5.3-vc6.dll"

1
我已经寻找这个原因超过一年了。对我来说,这是主要和唯一的罪魁祸首。以下是一篇文章,描述了在不必禁用Xdebug的情况下可以做什么:https://dev59.com/nYHba4cB1Zd3GeqPVsMN 谢谢! - Pascalculator
1
谢谢,谢谢,谢谢,谢谢!!!我已经尝试了这里和其他地方写的所有东西。而 XDEBUG 就是那个让 phpMyAdmin 变得非常慢的东西。现在它又飞起来了! - hbit
1
即使使用更新的扩展程序副本,问题仍然完全相同。当不需要时,对其进行注释对我来说更快,但可能与扩展程序的其他.ini设置之一有关。 - Martyn Shutt
1
你真是个英雄!最终我保留了xdebug,但关闭了分析器,我的脚本速度从大约5分钟提升到了5秒。谢谢你! - user3640967
1
对我而言,这是唯一能加快速度的办法。 令人惊讶的是,启用了Xdebug后,Internet Explorer 11速度真的非常快。相比之下,Chrome和Firefox简直慢得要命... - Guntram
显示剩余4条评论

48

对我有效的解决方案是禁用cgi_module。 可以使用以下方法之一:

(方法1)右键单击WAMP> Apache> Apache Modules>取消选中"cgi_module"

(方法2)编辑httpd.conf并通过注释此行来禁用CGI模块的加载:

LoadModule cgi_module modules/mod_cgi.so

注释只需在前面添加#,像这样:

#LoadModule cgi_module modules/mod_cgi.so

重新启动Apache服务,然后你就可以继续使用了。


+1 它像魔法一样运行!这个单独就解决了问题!我使用的是 Windows 7 Pro + Apache 2.4 + PHP 5.5.30。 - Marco Demaio
这对我有用。使用El Capitan(MAMP)+ Apache 2.2.29 + PHP 5.6.10。特别是在运行Parallels IE测试环境时的延迟问题。 - fidev
是的 - 我已经尝试了很多东西 - 在W7Pro上使用XAMPP,这对我有效。它似乎还修复了一些烦人的phpMyAdmin停滞刷新问题,其中PMA坐在那里带有时钟标志。 - anoldermark
这是唯一对我起作用的方法。我尝试了所有其他已知的修复方法,但都没有成功,只有这个方法有效。 - AdRock
即使在2021年,这个解决方案仍然有效! Win10,Apache/2.4.41(Win64)OpenSSL/1.1.1c PHP/7.3.11 数据库客户端版本:libmysql - mysqlnd 5.0.12-dev - summsel

22

在使用xDebug时,影响性能的是php.ini中的这一行:

xdebug.remote_autostart=true

当我将其删除后,页面又变得快了。


禁用 xdebug 扩展(zend_extension 行)对我有用。现在我需要一个新的调试器 -.-" 感谢指导我正确的方向。 - kosmos

18
如果您正在使用MySQL,请在mysql_connect函数中使用127.0.0.1代替localhost,这对我很有帮助。

15

我还无法在@Honesta的回答下进行评论,因此我将在此处写出我的解决方法。

我的环境(我不知道这是否与答案相关)

  • XAMPP(版本5.6.3)
  • Windows 8.1 Pro(64位)

如何操作

我只是打开了my.ini文件,并取消注释了其中说的那行。

bind-address="127.0.0.1"

对于XAMPP用户而言,该文件位于C:\xampp\mysql\bin\my.ini

致谢

这篇文章帮助了我解决问题,尽管因为XAMPP的某些设置不需要其中的一些内容。


9
我刚刚在我的Windows 10笔记本电脑上解决了这样的问题。突然间,WAMP变得非常慢 - 加载一个页面的请求需要2分钟。
尝试了很多方法后,最终解决问题的方法是禁用Windows Defender。此后一切都正常了。
顺便说一句,我建议把你的Apache根目录添加到例外列表中,而不是完全禁用Defender。

这太棒了!你是救命恩人,我花费了无数个小时来寻找答案!! - Gisto
这对我来说非常有效,我已经为这个问题苦苦挣扎了几周。 - Mohammed Cherkaoui

6
正如大多数答案所指出的那样,使用IP地址127.0.0.1而不是"localhost"有时会帮助解决缓慢的问题,但这并不是一个真正的解决方案,因为它没有解决根本问题。
导致此问题困难(并且具有随机性)的原因是,在操作系统、WAMP配置和浏览器之间可能会有大约十几种不同的问题。
以下是一些解决方法:
1. 从Windows hosts文件中删除::1 localhost,并确保127.0.0.1 localhost存在。您希望您的请求直接发送到监听IPv4套接字。
2. 在系统上禁用IPv6。您很可能不使用它,并且已知它会引起各种问题。
3. 将Apache和MySQL二进制路径以及Database文件夹从防火墙和反病毒软件中排除在外。它们会干扰并减慢速度。
4. 重置TCP/IP子系统并重新启动:netsh int ip reset c:\resetlog.txt
5. 确保您的系统未使用陈旧的DNS服务器:ipconfig /all
6. 刷新Windows DNS缓存:ipconfig /flushdns
7. 清除浏览器缓存。
更深入的指南可以参考这篇文章:WAMP is Running Very Slow

我做的第一件事,它运作得非常好,其他上面提供的技巧肯定也有用,只不过因为这个在答案底部,我首先尝试了这个并解决了我的问题,太棒了! - Agung Sagita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接