AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 66347
Accepted
Peter Perháč
Peter Perháč
Asked: 2009-09-18 09:15:33 +0800 CST2009-09-18 09:15:33 +0800 CST 2009-09-18 09:15:33 +0800 CST

为什么本地主机上的响应这么慢?

  • 772

我正在为我的一个朋友开发一个很小的 ​​PHP 项目,并且我有一个用于本地开发的 WAMP 环境设置。我记得我的本地 Apache 2.2 立即响应的日子。唉,现在我从一个漫长的假期回来了,我发现反应localhost慢得令人痛苦。

提供一个 300B 的 HTML 页面大约需要 5 秒。

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

为什么延迟这么高?有没有我可以调整的 Apache 设置,以使其线程以更高的优先级运行?似乎它只是在发出响应之前就睡着了。

apache-2.2
  • 8 8 个回答
  • 253179 Views

8 个回答

  • Voted
  1. sshow
    2012-01-14T03:55:02+08:002012-01-14T03:55:02+08:00

    对我来说,将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
    
    • 67
  2. michalko
    2012-11-02T03:51:31+08:002012-11-02T03:51:31+08:00

    我有同样的问题。

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

    然后我使用 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 毫秒。

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

    • 25
  3. Best Answer
    Peter Perháč
    2009-10-11T14:56:13+08:002009-10-11T14:56:13+08:00

    问题出在 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"

    谢谢大家的努力。

    • 22
  4. morpheus
    2013-01-11T01:24:57+08:002013-01-11T01:24:57+08:00

    检查是否/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 *******
    

    在这个地方****给出你的主机名。

    • 8
  5. lepix
    2014-06-25T05:26:17+08:002014-06-25T05:26:17+08:00

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

    1. 我使用 Mac OS X Mavericks
    2. 我通过 URL 访问了我的项目,因为我在其中输入http://myproject.local/了一行127.0.0.1 myproject.local/etc/hosts

    出现问题是因为.localtld 是为 Bonjour 服务保留的,而这从 Mac OS X Lion (10.7) 开始。

    将 tld 更改为其他内容可以解决问题。

    • 7
  6. drAlberT
    2009-09-18T10:16:13+08:002009-09-18T10:16:13+08:00

    在你httpd.conf一定要设置设置HostnameLookups Off。

    • 4
  7. Toby Allen
    2011-02-21T15:35:50+08:002011-02-21T15:35:50+08:00

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

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

    • 3
  8. Marco Demaio
    2015-11-22T05:32:17+08:002015-11-22T05:32:17+08:00

    这个问题有一个标签 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

    • 3

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve