web-dev-qa-db-ja.com

localhostでの応答が非常に遅いのはなぜですか?

私は私の小さな友人のための小さなPHP=プロジェクトに取り組んでおり、ローカル開発用にWAMP環境をセットアップしています。ローカルApache 2.2からの応答がすぐにあった時代を覚えています。悲しいことに、私は長い長い休暇から戻ったので、localhostからの応答が非常に遅くなっていることに気づきました。

300B HTMLページが表示されるまでに約5秒かかります。

タスクマネージャーを見ると、httpdプロセス(2)がCPUの0%を使用しており、コンピューター全体に負荷がかかっていません(0〜2%のCPU使用率)。

なぜレイテンシーはそんなに高いのですか?スレッドをより高い優先度で実行するために調整できるApache設定はありますか?応答を提供する前に、単にスリープ状態になっているようです。

59
Peter Perháč

問題は、Apacheのメイン設定ファイルhttpd.confにありました。

私はこれを見つけました:

PHPをWindows上のApache 2.xと連携させるには3つの方法があります。PHPをハンドラとして実行できます、CGIとして、またはFastCGIの下。[Source]

そして、Apacheの設定を調べて、問題がどこにあるかを確認しました。モジュールとしてロードするのではなく、CGIとしてセットアップしました。これにより、リクエストを送信するたびにphp-cgi.exeが起動およびシャットダウンしました。これは私のlocalhost開発を遅くしていました。

PHP Apacheとして[〜#〜]モジュール[〜#〜]をロードするように設定を変更しましたそれはすべて完璧に動作します。

PHP Apache 2.xのモジュールをロードするには:

1)httpd.confに次の行を挿入します

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

AddHandler application/x-httpd-php .php

(p.s. 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"

ご尽力ありがとうございました。

20
Peter Perháč

私にとっては、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
59
sshow

私も同じ問題を抱えていました。

Hostsファイルでlocalhostリダイレクトを127.0.0.1に設定しても効果がありませんでした。 MySQLサーバーの最適化は役に立ちませんでした(InnoDB-> MyISAM、my.iniのキャッシュ関連のディレクティブの多くを変更)。

次に、web webgrindを使用して、問題を「新しいPDO(...)」呼び出しに絞り込みました。変化

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

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

pDOのdsnで問題を完全に解決!ページの読み込み時間00ミリ秒を超えて16ミリ秒に変更

しかし、hostsファイルの「127.0.0.1 localhost」行が役に立たなかった理由を本当に混乱しています。

21
michalko

/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 *******

場所****ホスト名を入力します。

7
morpheus

私は同じ問題を抱えていて、最終的にそれが2つの事実から来ていることを発見しました:

  1. Mac OS X Mavericksを使用しています
  2. http://myproject.local/127.0.0.1 myproject.localという行を入れたので、/etc/hostsというURLを介してプロジェクトにアクセスしました

この問題は、.local tldがBonjourサービス用に予約されているために発生します。これはMac OS X Lion(10.7)以降です。

TLDを別のものに変更すると、問題が解決しました。

7
lepix

あなたのhttpd.conf必ず設定してくださいHostnameLookups Off

4
drAlberT

それが誰かを助ける場合、私はこの問題を抱えており、煮詰めて不正なDNSルックアップになっています。

サーバーのDNSサーバーが127.0.0.1に設定されました-GoogleパブリックDNSサーバーを使用するように変更しました。これにより、ヒープ全体が高速になりました。

3
Toby Allen

質問にはタグApache-2.2がありますが、誰かがこの悪質な問題の影響を受けている場合WAMP with Apache 2.4 + PHP 5.5、SOに関する次の答えは私のためにトリックを行いました:

編集httpd.confし、commentingこの行でCGIモジュールの読み込みを無効にします:LoadModule cgi_module modules/mod_cgi.so

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

2
Marco Demaio