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


59

私は私の友人のために小さなPHPプロジェクトに取り組んでおり、ローカル開発用にWAMP環境をセットアップしています。ローカルのApache 2.2からの応答がすぐにあった時代を思い出します。悲しいことに、長い長い休暇から戻ってきた今、私はlocalhost痛々しいほど遅いからの応答を見つけます。

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

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

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


1
されlocalhost、正しくDNSワイズ解決?ping localhost戻ってくる必要があり、瞬時127.0.0.1
アレクシスレー-クオック

それは正常に動作し、応答は1
ミリ秒

firefoxが問題になる可能性があると思っていましたが、IEでも5秒かかるため、システム設定またはApache設定またはグレムリンのいずれかでなければなりません。
ピーターPerháč09年

2
静的コンテンツを要求するとき(つまり、ロードするときhttp://localhost/index.html)に同じ動作をしますか?そうでない場合は、Apacheの問題ではなく、PHPの問題である可能性があります。
マーカス・シュピーゲル

5
この質問に対する多くの多様な答えが示すのは、ページのリクエストが遅くなる可能性のある理由が何百といっても、数百に及ぶということです。あまりにも遅いページリクエストがあるためにこの質問にたどり着いた場合、ここで有用な答えを得る前に、遅さの原因を深く掘り下げる必要があります。 straceそしてtcpdump、このための便利なツールです。
ラダダダダ

回答:


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
これは動作します-私は2回
賛成できれ

8
これも私のためにそれを修正します!遅延が10秒から2ミリ秒になりました!
ダグラスHeriot

私は何時間も苦労し、これが解決策でした。
ウィリアムカーズウェル

1
localhostが適切に解決する場合、なぜこれが問題なのですか?応答する前の10秒間はどうなりますか?どこかでタイムアウトするのを待っていますか?
ミラノ14

3
@Elipticalviewファイル内のコメントが言うように。If your host doesn't have a registered DNS name, enter its IP address here.
ショー14年

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

PDOのdsnで問題を完全に解決しました!ページの読み込み時間は3000ミリ秒以上から16ミリ秒になりました

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


3
誰かがそれを機能させるためにどのファイルを編集する必要があるか教えてもらえますか?
ギリ

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');
michalko

私は最近EXT-JSアプリケーションに取り組んでおり、応答に時間がかかりすぎるMYSQLデータクエリの大きな問題を抱えています。MYSQLは基本的に遅すぎました。よろしくお願いします。ここで答えを入手しました。接続スクリプトのホストを次のように変更しました。to host = 127.0.0.1サーバーの応答が3分(180秒)から1秒未満になりました。どうもありがとう。
-user184985

これで私の問題が解決しました。奇妙な... SQLiteの問題に気づかなかった
Mladen Janjetovic 14

2
私にとっても同じですが、WordPressについてだけです。wp-config.phpで「localhost」を「127.0.0.1」に置き換える必要がありました
エイドリアン

20

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

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

Windows上でApache 2.xで動作するようにPHPをセットアップするには、3つの方法があります。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
ソースに記載されている行の追加が停止します。Windowsでどのようにすればよいですか?
AgA

そのリンクは期限切れになりました。これを使用:goo.gl/2EVth9
T.Todua

7

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

  1. Mac OS X Mavericksを使用しています
  2. 次のhttp://myproject.local/行を追加したため、URL からプロジェクトにアクセスし127.0.0.1 myproject.localました/etc/hosts

この問題は、.localtldが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では設定されていません。
ラファエルベッケル

わたしも。/ etc / hostsに追加の行を追加する前に、要求に5秒以上かかりました。今、私のものは〜0.1秒で実行されます。
mwallisch

正しい方向に私を置きます。追加され127.0.0.1 something.atmy.localhost、現在はリクエストに20秒かかりません。代わりに、ローカルApacheはすぐに応答します。ネットワークについてはあまり知りません。何かが正しく構成されていないため、ドメイン名の解決が遅すぎると思います。
ロブシュ

4

httpd.conf必ず設定してくださいHostnameLookups Off


6
私はapache.confファイルを持っていないようです。また、すべてのファイルでHostnameLookupsディレクティブを検索し、core.html.enマニュアルファイルで見つけました。それはデフォルトではオフなので、私はそれがオフだと思うと述べた
ピーターPerháč

3

それが誰かを助ける場合、私はこの問題を抱えていて、それは間違ったDNSルックアップであることに要約されました

サーバーのDNSサーバーがに設定されまし127.0.0.1た-Googleパブリック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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.