เหตุใดการตอบสนองของ localhost จึงช้า


59

ฉันกำลังทำงานกับโปรเจ็กต์เล็ก ๆ น้อย ๆ ของ PHP สำหรับเพื่อนของฉันและฉันมีการตั้งค่าสภาพแวดล้อม WAMP สำหรับการพัฒนาในท้องถิ่น ฉันจำวันที่การตอบสนองจาก Apache 2.2 ในพื้นที่ของฉันได้ทันที อนิจจาตอนนี้ฉันกลับมาจากวันหยุดยาวที่ยาวนานฉันได้พบคำตอบจากlocalhostอาการเจ็บปวดช้า

ใช้เวลาประมาณ 5 วินาทีในการรับหน้า HTML 300B

เมื่อฉันดูที่ตัวจัดการงานhttpdกระบวนการ (2) กำลังใช้งาน CPU ขึ้น 0% และโดยรวมคอมพิวเตอร์ของฉันไม่ได้โหลด (การใช้งาน CPU 0-2%)

เหตุใดเวลาในการตอบสนองจึงสูงมาก มีการตั้งค่า Apache ที่ฉันสามารถปรับแต่งเพื่อให้เธรดรันด้วยลำดับความสำคัญที่สูงขึ้นหรือบางสิ่งบางอย่าง? ดูเหมือนว่ามันเป็นเพียงการนอนหลับก่อนที่จะตอบสนองออกมา


1
คือlocalhostการแก้ปัญหาอย่างถูกต้อง DNS ฉลาด? ping localhostควรกลับมาทันที127.0.0.1ด้วย
Alexis Lê-Quôc

ใช้งานได้ดีคำตอบที่ได้รับใน <1ms
Peter Perháč

ฉันคิดว่า firefox อาจเป็นปัญหา แต่ใช้ 5s ใน IE ดังนั้นต้องมีการตั้งค่าระบบหรือการตั้งค่า Apache หรือ gremlins
ปีเตอร์Perháč

2
มันมีพฤติกรรมเหมือนกันเมื่อขอเนื้อหาคงที่ (เช่นเมื่อโหลดhttp://localhost/index.html)? หากไม่เป็นเช่นนั้นอาจเป็นปัญหา PHP ไม่ใช่ปัญหา Apache
Marcus Spiegel

5
คำตอบที่หลากหลายและหลากหลายสำหรับคำถามนี้แสดงว่ามีหลายสิบหากไม่ใช่เหตุผลที่แตกต่างกันหลายร้อยคำขอหน้าอาจช้า หากคุณมาถึงคำถามนี้เพราะคุณมีคำขอหน้าช้าคุณจะต้องเจาะลึกลงไปในสาเหตุของความเชื่องช้าก่อนที่คุณจะได้รับคำตอบที่เป็นประโยชน์ที่นี่ straceและtcpdumpเป็นเครื่องมือที่มีประโยชน์สำหรับสิ่งนี้
Ladadadada

คำตอบ:


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
งานนี้ - หวังว่าฉันจะ
โหวตได้

8
สิ่งนี้จะแก้ไขให้ฉันด้วย! ไปจากเวลาแฝง 10 วินาทีถึง 2 มิลลิวินาที!
DouglasHeriot

ฉันพยายามหลายชั่วโมงและนี่คือทางออก
williamcarswell

1
เหตุใดจึงเป็นปัญหาถ้า localhost แก้ไขอย่างถูกต้อง? เกิดอะไรขึ้นกับ 10sec ก่อนที่มันจะตอบสนอง กำลังรอที่จะหมดเวลาที่ไหนสักแห่ง?
มิลาน

3
@Elipticalview ในฐานะที่เป็นความคิดเห็นในไฟล์พูดว่า; If your host doesn't have a registered DNS name, enter its IP address here.
sshow

21

ฉันมีปัญหาเดียวกันมาก

การตั้งค่า localhost เปลี่ยนเส้นทางเป็น 127.0.0.1 ในไฟล์โฮสต์ไม่ได้ช่วยอะไร การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ MySQL ไม่ได้ช่วย (InnoDB -> MyISAM การเปลี่ยนคำสั่งที่เกี่ยวข้องกับแคชจำนวนมากใน my.ini)

จากนั้นฉันใช้เว็บ webgrind และ จำกัด ปัญหาให้แคบลงเพื่อเรียก "PDO (... )" ใหม่ เปลี่ยนแปลง

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

ไปยัง

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

ใน dsn สำหรับ PDO แก้ปัญหาได้อย่างสมบูรณ์ ! เวลาในการโหลดหน้าเดินออกมาจากกว่า 3000 มิลลิวินาทีเพื่อ 16ms

อย่างไรก็ตามฉันสับสนจริงๆว่าทำไมบรรทัด "127.0.0.1 localhost" ในไฟล์โฮสต์ไม่ได้ช่วยอะไร


3
ใครสามารถบอกฉันไฟล์ที่ฉันควรแก้ไขเพื่อให้ทำงานได้หรือไม่
Giri

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 นั้นช้าเกินไป ขอบคุณพระเจ้ามีคำตอบที่นี่ ..... เพียงแค่เปลี่ยนโฮสต์ของฉันในสคริปต์การเชื่อมต่อจาก: host = localhost; เพื่อโฮสต์ = 127.0.0.1 การตอบกลับเซิร์ฟเวอร์ของฉันเปลี่ยนจาก 3 นาที (180 วินาที) เป็นน้อยกว่า 1 วินาที ขอบคุณมาก.
user184985

นี่เป็นการแก้ไขปัญหาของฉัน แปลก ... ฉันไม่ได้สังเกตว่าปัญหาใน SQLite
Mladen Janjetovic

2
เหมือนกันสำหรับฉัน แต่เพียงสำหรับ WordPress ต้องแทนที่ "localhost" ด้วย "127.0.0.1" ใน wp-config.php
เอเดรีย

20

httpd.confปัญหาอยู่กับการตั้งค่าไฟล์หลักของ Apache

ฉันพบสิ่งนี้:

มีสามวิธีในการตั้งค่า PHP ให้ทำงานกับ Apache 2.x บน Windows คุณสามารถเรียกใช้ PHP เป็นตัวจัดการ CGI หรือภายใต้ FastCGI [ที่มา]

ดังนั้นฉันจึงเข้าสู่การตั้งค่าของ Apache และดูว่าปัญหาอยู่ที่ไหน: ฉันตั้งค่าเป็น CGI แทนที่จะโหลดเป็นโมดูล สิ่งนี้ทำให้เกิดphp-cgi.exeการเริ่มต้นและปิดทุกครั้งที่ฉันทำคำขอ นี่ทำให้localhostการพัฒนาของฉันช้าลง

ฉันเปลี่ยนการตั้งค่าเพื่อโหลด PHP เป็น Apache MODULEและตอนนี้ก็ทำงานได้อย่างสมบูรณ์ :)

ในการโหลดโมดูล PHP สำหรับ Apache 2.x:

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

ลิงก์นั้นหมดอายุ ใช้สิ่งนี้: goo.gl/2EVth9
T.Todua

7

ฉันมีปัญหาเดียวกันและในที่สุดก็พบว่ามันมาจากข้อเท็จจริงสองประการ:

  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 เพื่อแก้ไขปัญหาอื่น


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
Rafael Beckel

เหมือนกับฉัน. คำขอใช้เวลา> 5 วินาทีก่อนที่ฉันจะเพิ่มบรรทัดเพิ่มเติมใน / etc / hosts ตอนนี้ข้อมูลของฉันทำงานใน ~ 0.1 วินาที
mwallisch

ทำให้ฉันไปในทิศทางที่ถูกต้อง เพิ่ม127.0.0.1 something.atmy.localhostและตอนนี้ขอไม่ใช้เวลา 20 วินาทีอีกต่อไป แทน apache ท้องถิ่นตอบกลับโดยทันที ไม่รู้มากเกี่ยวกับเครือข่าย ฉันเดาว่าชื่อโดเมนจะได้รับการแก้ไขช้าเกินไปเพราะบางสิ่งไม่ได้กำหนดค่าอย่างถูกต้อง
robsch

4

ในของคุณให้แน่ใจว่าได้ตั้งค่าการตั้งค่าhttpd.confHostnameLookups Off


6
ฉันดูเหมือนจะไม่มีไฟล์ apache.conf ฉันยังค้นหาคำสั่ง HostnameLookups ในไฟล์ทั้งหมดและฉันพบมันในไฟล์ core.html.en ด้วยตนเอง มันบอกว่าเป็น Off ตามค่าเริ่มต้นดังนั้นฉันเดาว่ามันปิด
4253 Peter Perháč

3

ในกรณีที่จะช่วยให้ทุกคนผมก็มีปัญหานี้และมันต้มลงไปเป็นการค้นหา DNS ที่ไม่ถูกต้อง

เซิร์ฟเวอร์ DNS บนเซิร์ฟเวอร์ถูกตั้งค่าเป็น127.0.0.1- ฉันเปลี่ยนเป็นเซิร์ฟเวอร์ DNS สาธารณะของ Google และทำให้ฮีปทั้งหมดเร็วขึ้น


2

คำถามมีแท็ก apache-2.2 แต่ถ้าใครบางคนได้รับผลกระทบจากปัญหาที่เลวร้ายนี้เช่นกันในWAMP ด้วย Apache 2.4 + PHP 5.5คำตอบต่อไปนี้สำหรับคำสั่งดังต่อไปนี้

แก้ไข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.