2011-01-11 21 views
6

मैंने एक वीपीएस पर पोस्टग्रेएसक्यूएल सेटअप किया है - डेटाबेस का उपयोग करने वाला सॉफ़्टवेयर पोकरट्रैकर नामक एक प्रोग्राम है।रिमोट पोस्टग्रेस्क्ल - बेहद धीमी

पोकरट्रैकर ऑनलाइन पोकर खेलते समय आपके सभी हाथों और आंकड़ों को लॉग करता है।

मैं इसे कई अलग-अलग कंप्यूटरों से सुलभ करना चाहता था इसलिए इसे अपने वीपीएस पर स्थापित करने का फैसला किया और कुछ हिचकी के बाद मैं इसे त्रुटियों के बिना कनेक्ट करने में कामयाब रहा।

हालांकि, प्रदर्शन डरावना है। मैंने 'रिमोट पोस्टग्रेस्क्ल धीमी' आदि पर बहुत से शोध किए हैं और मुझे अभी तक कोई जवाब नहीं मिला है इसलिए उम्मीद है कि कोई मदद कर सके।

बातें ध्यान रखें:

क्वेरी मैं निष्पादित करने के लिए कोशिश कर रहा हूँ बहुत छोटा है। VPS पर स्थानीय रूप से कनेक्ट करते समय, क्वेरी तुरंत चलती है।

इसे दूरस्थ रूप से चलाने के दौरान, क्वेरी चलाने में लगभग 1 मिनट और 30 सेकंड लगते हैं।

वीपीएस 100 एमबीपीएस चला रहा है और फिर कंप्यूटर मैं इसे 8 एमबी लाइन से कनेक्ट कर रहा हूं।

दोनों के बीच नेटवर्क संचार लगभग तुरंत है, मैं किसी भी अंतराल के साथ दूरस्थ रूप से कनेक्ट करने में सक्षम हूं और एमएसएसक्यूएल चलाने वाली कई वेबसाइटों को होस्ट कर रहा हूं और सभी प्रश्न तुरंत चलते हैं, चाहे दूरस्थ रूप से या स्थानीय रूप से जुड़े हों, तो यह PostgreSQL के लिए विशिष्ट लगता है ।

मैं सॉफ्टवेयर का अपना नवीनतम संस्करण और उनके सॉफ्टवेयर के साथ PostgreSQL का नवीनतम संगत संस्करण चला रहा हूं।

डेटाबेस एक नया डेटाबेस है, जिसमें शायद ही कोई डेटा शामिल है और मैंने बिना किसी लाभ के वैक्यूम/विश्लेषण आदि चलाया है, मुझे कोई सुधार नहीं दिख रहा है।

मुझे समझ में नहीं आता कि एमएसएसक्यूएल लगभग तुरंत पूछताछ कैसे कर सकता है PostgreSQL इतना संघर्ष करता है।

मैं बिना किसी समस्या के वीपीएस आईपी पर पोर्ट 5432 पर टेलनेट करने में सक्षम हूं, और जैसा कि मैंने कहा है कि क्वेरी निष्पादित करती है, यह बहुत लंबा समय लेती है।

राउटर पर जो नोटिस चल रहा है, वह राउटर पर है, शायद ही कोई बैंडविड्थ का उपयोग किया जा रहा है - लेकिन फिर मैं इसे एक साधारण क्वेरी के लिए उम्मीद नहीं करूँगा लेकिन मुझे यकीन नहीं है कि यह मुद्दा है या नहीं। मैंने अब 3 अलग-अलग नेटवर्कों पर दूरस्थ रूप से कनेक्ट करने का प्रयास किया है (विभिन्न राउटर समेत) लेकिन समस्या बनी हुई है।

LAN के माध्यम से किसी अन्य मशीन के माध्यम से दूरस्थ रूप से कनेक्ट करना तत्काल है।

मैंने पोस्टग्रे conf फ़ाइल को और अधिक मेमोरी/बफर इत्यादि की अनुमति देने के लिए भी संपादित किया है, लेकिन मुझे नहीं लगता कि यह समस्या है - मैं जो करना चाहता हूं वह बहुत आसान है - यह बिल्कुल गहन नहीं होना चाहिए ।

धन्यवाद, रिकी

संपादित करें: कृपया ध्यान दें क्लाइंट और सर्वर दोनों Windows चला रहे हैं।

यहां कॉन्फ़िगरेशन फ़ाइलों से जानकारी है।

 
pg_hba - currently allowing all traffic: 

# TYPE DATABASE USER  CIDR-ADDRESS   METHOD 

# IPv4 local connections: 
host  all  all  0.0.0.0/0 md5 
# IPv6 local connections: 
# host all  all  ::1/128  md5 

और postgresqlconf - मुझे पता है कि मैं इस config करने के लिए बफर के कुछ विशाल राशि/स्मृति दिया है हूँ, अगर यह मुद्दा था सिर्फ परीक्षण करने के लिए - uncommented लाइनों केवल दिखा:

 
listen_addresses = '*' 
port = 5432 
max_connections = 100 
shared_buffers = 512MB 
work_mem = 64MB 
max_fsm_pages = 204800 
shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' 
log_destination = 'stderr' 
logging_collector = on 
log_line_prefix = '%t ' 
datestyle = 'iso, mdy' 
lc_messages = 'English_United States.1252' 
lc_monetary = 'English_United States.1252' 
lc_numeric = 'English_United States.1252' 
lc_time = 'English_United States.1252' 
default_text_search_config = 'pg_catalog.english' 

कोई अन्य जानकारी आवश्यक है, कृपया मुझे बताएं। आपकी सभी मदद का धन्यवाद।

+0

क्वेरी पोस्ट करें, शामिल टेबल और उत्पादन के आकार के आकार। – Quassnoi

+1

यह पोस्टग्रेस समस्या की बजाय नेटवर्किंग समस्या की तरह लगता है। यदि आप 'psql -h सर्वर ...' का उपयोग कर क्लाइंट मशीन से क्वेरी करते हैं तो क्या होता है? यदि आप इसे एक एसएस सुरंग पर करते हैं तो क्या होता है? –

+0

मुझे पता था कि मैं महत्वपूर्ण जानकारी याद करूँगा। मैं यह कहना भूल गया कि दोनों ऑपरेटिंग सिस्टम विंडोज चल रहे हैं। यदि आवश्यक हो तो मैं क्वेरी पोस्ट करूंगा, लेकिन यह एक साधारण सवाल है, सिर्फ एक टेबल को देखते हुए समस्या का कारण बनता है। मैं नहीं देख सकता कि क्वेरी के कारण यह कैसे हो सकता है जब स्थानीय रूप से यह तत्काल होता है और फिर भी इसे दूरस्थ रूप से चलाने में बड़ी देरी होती है। – Ricky

उत्तर

2

मैं लॉगिंग सक्षम के डेवलपर्स के लिए लॉग भेजा उनके सॉफ्टवेयर। उनका जवाब यह था कि मूल रूप से स्थानीय या निकट स्थानीय डेटाबेस पर चलाने के लिए सॉफ़्टवेयर का उद्देश्य था ताकि नेटवर्क विलंबता के कारण वीपीएस पर चलने की उम्मीद धीमी हो।

आपकी सभी मदद के लिए धन्यवाद, लेकिन ऐसा लगता है कि मैं विचारों से बाहर हूं और यह विशेष रूप से वीपीएस पर पोस्टग्रेएसक्यूएल की बजाय सॉफ़्टवेयर के कारण है।

धन्यवाद, रिकी

0

नेटवर्क कनेक्शन उपकरण का उपयोग करें (मैं wireshark reccomend, क्योंकि यह postgresql सहित कई प्रोटोकॉल का पता लगा सकता है) यह देखने के लिए कि नेटवर्क कनेक्शन ठीक है या नहीं। यदि कनेक्शन खराब है तो आपको गिराए गए/पुनः प्रेषित पैकेट दिखाई देंगे।

+0

मैं आज रात Wireshark कोशिश करेंगे। आपके सहयोग के लिए धन्यवाद। – Ricky

0

शायद पोस्टग्रेस आपको ident का उपयोग करके प्रमाणित करने का प्रयास कर रहा है, जो काम नहीं कर रहा है (उदाहरण के लिए फ़ायरवॉल आउट), और अन्य माध्यमों से कनेक्शन की अनुमति देने से पहले टाइमआउट का इंतजार करना है।

psql का उपयोग कर select version() के लिए दूरस्थ सर्वर से पूछताछ करने का प्रयास करें - यह तत्काल होना चाहिए, क्योंकि यह डिस्क को स्पर्श नहीं करता है।

यदि यह तत्काल नहीं है तो कृपया अपनी pg_hba.conf (असम्बद्ध पंक्तियां) पोस्ट करें।

एक अन्य संभावित कारणों:

  • प्रमाणीकरण का उपयोग RevDNS;
  • सर्वर या क्लाइंट पर एंटीवायरस;
  • कुछ अन्य कनेक्शन किसी तालिका या पंक्ति को अवरुद्ध कर रहा है, क्योंकि यह स्पष्ट रूप से समाप्त नहीं हुआ है।
+0

हाय। मैंने दूरस्थ संस्करण() को दूरस्थ रूप से आजमाया और यह बहुत तेज़ था (शायद कुछ मिलीसेकंड) और संस्करण प्रदर्शित किया। मेरे वीपीएस पर, कोई एंटी वायरस सॉफ्टवेयर नहीं है। – Ricky

+0

मुझे आश्चर्य है कि यह मुद्दा है या नहीं। ओएस वीपीएस स्थापित है जिस पर समस्या हो सकती है। अगर कुछ समय समाप्त हो रहा है, तो मेरे पास इसका नियंत्रण नहीं हो सकता क्योंकि मेरे पास केवल वीपीएस तक पहुंच है। क्या यह कहीं भी लॉग इन होगा, अगर यह समय समाप्त हो रहा है? PostgreSQL त्रुटि लॉग आदि बनाते हैं? – Ricky

1

आप एक explain analyze जो आप (ग्राहक के लिए परिणाम भेजने का नेटवर्क भूमि के ऊपर के बिना) सर्वर पर क्वेरी के निष्पादन के समय बताएगा कर सकते हैं।

यदि सर्वर निष्पादन समय बहुत तेज़ है (जब आप देख रहे समय की तुलना में) यह नेटवर्क समस्या है। यदि सूचना समय बहुत है कि आप अपने पक्ष पर निरीक्षण करने के लिए इसी तरह की है, यह एक PostgreSQL समस्या है (और फिर आप कार्य योजना लागू करके और संभवतः अपने PostgreSQL विन्यास पोस्ट करने के लिए की जरूरत है) और

+0

हाय, मैंने दूरस्थ संस्करण() क्वेरी को दूरस्थ रूप से और स्थानीय रूप से चलाने का प्रयास किया और दोनों बार यह बहुत तेज़ था। स्थानीय रूप से, कार्यक्रम 'पोकरट्रैकर' तुरंत डेटा आयात करता है। दूरस्थ रूप से, इसमें बहुत अधिक समय लगता है। मैं अपनी विन्यास पोस्ट करने जा रहा हूँ। – Ricky

+0

'चयन संस्करण() 'सर्वर और क्लाइंट के बीच डेटा की यथार्थवादी मात्रा को स्थानांतरित नहीं करता है। आप वास्तव में समझाने धीमी गति से प्रश्नों में से एक पर विश्लेषण असली अपराधी –

+0

समस्या मेरे पास है वह किसी तृतीय पक्ष क्वेरी चलाने कार्यक्रम है खोजने के लिए चलाना चाहिए, तो मुझे यकीन है कि क्या वास्तव में क्वेरी है नहीं कर रहा हूँ। क्या कोई अन्य सामान्य क्वेरी है जिसके खिलाफ मैं इसे चला सकता हूं, कुछ ऐसा जो कि दोनों के बीच स्थानांतरित डेटा की आवश्यकता है? – Ricky

0

यही कारण है कि स्नातकोत्तर पहुँच वीपीएन से अधिक धीमी है का जवाब नहीं है, लेकिन एक संभव समाधान/वैकल्पिक एक ब्राउज़र के माध्यम पीजी तक पहुँचने के लिए TeamPostgreSQL की स्थापना हो सकती है। यह एक AJAX वेबपैप है जिसमें आपके डेटा को नेविगेट करने के साथ-साथ डेटाबेस प्रबंधित करने के लिए कुछ बहुत ही सुविधाजनक सुविधाएं शामिल हैं।

यह वीपीएन पर पीजी के साथ काम करते समय मेरे अनुभव में गिराए गए कनेक्शन से भी बच जाएगा।

वेब एक्सेस के लिए phpPgAdmin भी है लेकिन मैं TeamPostgreSQL का उल्लेख करता हूं क्योंकि यह डेटाबेस में डेटा पर नेविगेट करने और ओवरव्यू के लिए बहुत उपयोगी हो सकता है।

+0

हाय जॉनी, कृपया ध्यान दें कि यह एक वीपीएन के माध्यम से कनेक्ट नहीं है - यह एक वीपीएस पर आयोजित है। – Ricky

0

थोड़ी देर के लिए इस मुद्दे से पीड़ित है और यह सवाल मुझे जवाब में ले जाता है इसलिए सोचा कि मैं इसे साझा करने में मदद करता हूं।

सर्वर का एक माध्यमिक नेटवर्क इंटरफ़ेस (eth1) था जो डिफ़ॉल्ट मार्ग के रूप में सेट किया गया था। ग्राहक प्रश्नों प्रदर्शन eth0 के रूप में एक ही सबनेट के भीतर था, इसलिए इस किसी भी मुद्दे का कारण नहीं होना चाहिए .. लेकिन यह किया गया था।

डिफ़ॉल्ट मार्ग को अक्षम करने से क्वेरी सामान्य समय के फ्रेम में वापस आ गईं। लेकिन दीर्घकालिक फिक्स listen_addresses को '*' से सही आईपी में बदलना था।