लोकलहोस्ट पर प्रतिक्रिया इतनी धीमी क्यों है?


59

मैं अपने एक दोस्त के लिए एक छोटी सी PHP परियोजना पर काम कर रहा हूं, और मेरे पास स्थानीय विकास के लिए एक WAMP पर्यावरण सेटअप है। मुझे वे दिन याद हैं जब मेरे स्थानीय अपाचे 2.2 की प्रतिक्रिया तत्काल थी। काश, अब जब मैं एक लंबी, लंबी छुट्टी से वापस आया, मुझे localhostदर्द धीमी गति से प्रतिक्रियाएं मिल रही हैं ।

एक 300B HTML पृष्ठ को बाहर निकालने के लिए लगभग 5 सेकंड लगते हैं।

जब मैं कार्य प्रबंधक को देखता हूं, तो httpdप्रक्रियाएं (2) 0% CPU का उपयोग कर रही हैं और कुल मिलाकर मेरा कंप्यूटर लोड (0-2% CPU उपयोग) के अंतर्गत नहीं है।

विलंबता इतनी अधिक क्यों है? वहाँ किसी भी अपाचे सेटिंग है कि मैं शायद एक उच्च प्राथमिकता या कुछ के साथ अपने धागे को चलाने के लिए tweak कर सकता है? ऐसा लगता है जैसे यह प्रतिक्रिया से बाहर सेवा करने से पहले बस सो रहा है।


1
क्या localhostडीएनएस-वार ठीक से हल हो रहा है? ping localhostके साथ तुरंत वापस आना चाहिए 127.0.0.1
एलेक्सिस Lê-Quôc

यह ठीक काम करता है, प्रतिक्रिया मिली <1ms
पीटर Peráč

मैंने सोचा कि फ़ायरफ़ॉक्स समस्या हो सकती है, लेकिन IE में भी 5s लगते हैं, इसलिए या तो कुछ सिस्टम सेटिंग या Apache सेटिंग या greminins होना चाहिए।
पीटर Peráč

2
क्या स्थैतिक सामग्री (यानी लोड करते समय http://localhost/index.html) का अनुरोध करते समय इसका व्यवहार समान होता है ? यदि नहीं, तो यह एक 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
यह काम करता है - काश मैं दो बार
उत्थान

8
यह मेरे लिए भी इसे ठीक करता है! 10s विलंबता से 2ms तक चला गया!
डगलसहेरोट

मैं घंटों तक संघर्ष करता रहा और यही समाधान था।
8

1
अगर लोकलहोस्ट ठीक से हल करता है तो यह समस्या क्यों है? जवाब देने से पहले उन 10sec पर क्या हो रहा है? कहीं टाइम-आउट की प्रतीक्षा कर रहा है?
मील

3
@Elipticalview जैसा कि फ़ाइल में टिप्पणी कहती है; If your host doesn't have a registered DNS name, enter its IP address here.
sshow

21

मुझे वही समस्या थी।

होस्टहोस्ट फ़ाइल में 127.0.0.1 पर लोकलहोस्ट रीडायरेक्ट सेट करने से मदद नहीं मिली। MySQL सर्वर को ऑप्टिमाइज़ करने से मदद नहीं मिली (InnoDB -> MyISAM, my.ini में कैश संबंधित कई निर्देशों को बदलते हुए)।

फिर मैंने वेब वेबग्राइंड का इस्तेमाल किया और समस्या को "नई पीडीओ (...)" कॉल तक सीमित कर दिया। बदलना

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

सेवा

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

dsn में पीडीओ के लिए पूरी तरह से समस्या का हल ! पृष्ठ लोड होने का समय 3000 ms से 16ms तक चला गया

हालाँकि मैं वास्तव में उलझन में हूँ कि मेजबानों की फाइल में "127.0.0.1 लोकलहोस्ट" लाइन ने मदद क्यों नहीं की।


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 मूल रूप से बहुत धीमा था। शुक्रिया, यहाँ जवाब मिला ..... बस अपने होस्ट को कनेक्शन स्क्रिप्ट में बदल दिया: होस्ट = लोकलहोस्ट; होस्ट करने के लिए = 127.0.0.1 मेरे सर्वर की प्रतिक्रिया 3min (180secs) से 1 सेकंड कम से कम हो गई। बहुत बहुत धन्यवाद।
user184985

इससे मेरी समस्या हल हो गई। अजीब बात है ... मैंने उस समस्या को SQLite में नहीं देखा
Mladen Janjetovic

2
मेरे लिए वही, लेकिन सिर्फ वर्डप्रेस के लिए। "127.0.0.1" के साथ "लोकलहोस्ट" को wp-config.php में बदलना था
एड्रियन

20

समस्या अपाचे की मुख्य सेटिंग्स फ़ाइल के साथ थी httpd.conf

मुझे मिला:

विंडोज पर Apache 2.x के साथ काम करने के लिए PHP सेट करने के तीन तरीके हैं। आप PHP को हैंडलर के रूप में, CGI के रूप में या FastCGI के तहत चला सकते हैं। [स्रोत]

और इसलिए मैं अपाचे की सेटिंग में गया और देखा कि समस्या कहां थी: मैंने इसे एक मॉड्यूल के रूप में लोड करने के बजाय 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

( 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
मेरी अपाचे स्रोत में वर्णित लाइनों को जोड़ने पर रोकती है। मैं विंडोज में कैसे करूँ?
AgA

वह लिंक समाप्त हो गया। इसका उपयोग करें: goo.gl/2EVth9
T.Todua

7

मुझे एक ही समस्या थी और अंत में पता चला कि यह दो तथ्यों से आ रहा था:

  1. मैं Mac OS X Mavericks का उपयोग करता हूं
  2. मैं यूआरएल द्वारा अपने प्रोजेक्ट पहुँचा http://myproject.local/क्योंकि मैं एक लाइन डाल 127.0.0.1 myproject.localमें/etc/hosts

समस्या दिखाई देती है क्योंकि .localबल्ड बॉनजोर सेवा के लिए आरक्षित है, और यह मैक ओएस एक्स लायन (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 *******

जगह में ****अपने hostname दे।


यह मेरे लिए मामला था। मेरा डोमेन ipv4 लाइन में सेट किया गया था, लेकिन ipv6 में नहीं।
राफेल बेकल

मेरे लिए भी वैसा ही। अनुरोधों में 5 सेकंड लगे, इससे पहले कि मैं / etc / host में अतिरिक्त लाइन डालूं। अब मेरा सामान ~ 0.1 सेकंड में चलता है।
मवालिस्क

मुझे सही दिशा में लगाओ। जोड़ा गया 127.0.0.1 something.atmy.localhostऔर अब अनुरोध में 20 सेकंड का समय नहीं लगता है। इसके बजाय स्थानीय अपाचे तुरंत प्रतिक्रिया करता है। नेटवर्क के बारे में इतना नहीं जानते। मुझे लगता है कि डोमेन नाम बहुत धीरे-धीरे हल हो जाता है, क्योंकि कुछ संक्षिप्त रूप से कॉन्फ़िगर नहीं किया गया है।
robsch

4

अपने httpd.confमें सेटिंग सेट करने के लिए सुनिश्चित हो HostnameLookups Off


6
मुझे अपाचे.कॉन्फ़ फ़ाइल नहीं लगती, मैंने भी सभी फ़ाइलों में HostnameLookups के निर्देशन की खोज की और मैंने इसे core.html.en मैन्युअल फ़ाइल में पाया। यह कहा कि यह डिफ़ॉल्ट रूप से बंद है, इसलिए मुझे लगता है कि यह बंद है
पीटर Peráč

3

यदि यह किसी की मदद करता है, तो मुझे यह समस्या थी और यह गलत डीएनएस लुकअप होने की वजह से उबल पड़ा ।

सर्वर पर डीएनएस सर्वर सेट किया गया था 127.0.0.1- मैंने इसे Google पब्लिक डीएनएस सर्वर का उपयोग करने के लिए बदल दिया, और इसने इसे पूरी तरह से तेजी से बनाया।


2

सवाल में एक टैग अपाचे -२.२ है, लेकिन अगर कोई इस नापाक मुद्दे से प्रभावित है, तो वह भी एपाचे २४० + पीएचपी ५.५ के साथ डब्ल्यूएएमपी पर, एसओ पर निम्न उत्तर ने मेरे लिए चाल चली:

इस लाइन पर टिप्पणीhttpd.conf करके CGI मॉड्यूल के लोडिंग को संपादित और अक्षम करें :LoadModule cgi_module modules/mod_cgi.so

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.