pgBouncer দুর্দান্ত কাজ করে তবে মাঝে মাঝে অনুপলব্ধ হয়ে যায়


9

আমি ব্যস্ত পোস্টগ্রেস 9 ডাটাবেসের সামনে পিজবাউনার চালাচ্ছি। বেশিরভাগ সময় এটি ঠিকঠাক কাজ করে। তবে প্রতি কয়েক ঘন্টা পরেই আমি আমার অ্যাপ্লিকেশন থেকে সাইকোপজি ২ ব্যতীত একটি ত্রুটি ইমেল পাব:

অপারেশনালআরার ('সার্ভারের সাথে সংযোগ করতে পারেনি: অনুরোধ করা ঠিকানাটি বরাদ্দ করতে পারে না সার্ভার হোস্ট "নব্য-হাল্ক" এ চলছে এবং 32৪৩২ পোর্টে টিসিপি / আইপি সংযোগ গ্রহণ করছে?')

এটি এক অজগর অ্যাপ্লিকেশন, যা চলছে একগুচ্ছ সেলারি কর্মীদের কাজ চালাচ্ছে। যখন এই ত্রুটিগুলি উপস্থিত হয় আমি পিজবাউসার ডিবি পরীক্ষা করি এবং পুলের আকার সীমাতে থাকে। কিছু পরীক্ষা-নিরীক্ষার পরে আমি পুলের সর্বোচ্চ আকার 400 এবং পুলের আকার 200 এ সেট করেছি pool পুল মোডটি "সেশন" (অনুরোধগুলি বেশিরভাগ স্বয়ংক্রিয়-প্রতিশ্রুতিবদ্ধ হয়, প্রায় কোনও লেনদেন হয় না)।

পিজবাউনসার কী এমনভাবে 'বিলুপ্ত' হয়? এটি কেবলমাত্র স্বল্প সময়ের জন্য (এবং মোট আমরা অনুরোধগুলির হ'ল ভলিউমের তুলনায় একটি ক্ষুদ্র পরিমাণ অনুরোধের কথা বলছি) তবে যে অনুরোধগুলি ব্যর্থ হয় তা গুরুত্বপূর্ণ।

ধন্যবাদ!


অপারেটিং সিস্টেম এবং সংস্করণ? কার্নেল সংস্করণ যদি লিনাক্স? হুবহু পোস্টগ্রিসএসকিউএল এবং পিজবাউনসার সংস্করণগুলি? আপনি কি ডিবাগ লগ স্তরে পিজবাউনার চালিয়েছেন এবং দেখেছেন যদি এটি কোনও কার্যকর ব্যবহারের প্রতিবেদন করে?
ক্রেগ রিঞ্জার

ডেবিয়ান 6. লিনাক্স সংস্করণ 2.6.32-5-amd64 (দেবিয়ান ২..3.৩২-৪৮স্কুয়েজ ১) পিজবিউনসার সংস্করণ 1.5.4 পোস্টগ্রিস 9.1। লগটি সংযোগ / সংযোগ বিচ্ছিন্ন করে না কারণ আমি ভেবেছিলাম এটি কিছুটা বেশি, তবে those অ্যাপ্লিকেশন ত্রুটিগুলি ছুঁড়ে ফেলা হলে কোনও ত্রুটি উপস্থিত হয় না। ত্রুটিটি সাইকোপজি ২ থেকে ভেবে এসেছে যে কথা বলার জন্য কোনও ডিবি সার্ভার নেই, যদিও এই সমস্যাটি পিজিবউনারের আগে উপস্থিত ছিল না
হেরেল

1
এইচএম, এখনকার পিজবাউনার এবং কার্নেলটি প্রাচীন তবে বেশ স্থিতিশীল। আমি মনে করি আপনার সাথে পিজিবাউনসারে আরও বিশদ লগিং সক্ষম -vvvকরতে হবে এবং আপনার ত্রুটিগুলি সময়মতো অসাধারণ লগ আউটপুটটির সাথে মেলে কিনা তা দেখুন।
ক্রেগ রিঞ্জার

আমি একটি "সেট ভার্বোজ = 1; পুনরায় লোড;" করেছি পিগবাউনার শেলটিতে এবং লগের মধ্যে সাধারণ কিছু খুঁজে পাচ্ছিল না। এটি একটি প্রোডাকশন সিস্টেম তাই -vvv সহ নন-ডেমন হিসাবে চালানোর জন্য পরিষেবাটি থামাতে পারেনি। আশা করি আমিও একই ফল পেয়েছি। নোট করুন যে ত্রুটিটি পরামর্শ দেয় যে এটি পগবৌনসারের সাথে কোনওভাবেই সংযোগ করতে পারে না, অর্থাত্‍ সে বন্দরে এটি শুনতে পেল না। এখানে সর্বদা হাজার হাজার সংযোগ রয়েছে এবং এটি আশ্চর্যজনক যে তাদের অল্প সংখ্যক এর মতো ব্যর্থ হয়।
হেরেল

কৌশলী; এটি একটি সম্ভাব্য জাতি শর্তের মতো মনে হচ্ছে তবে কী / কোথায় ...
ক্রেগ রিঞ্জার

উত্তর:


15

" হস্তান্তর করা যাবে না অনুরোধ করা ঠিকানা ত্রুটি বার্তা মধ্যে" অংশ কার্নেল বিভিন্ন TCP স্ট্যাক থেকে আসে। মাঝে মাঝে অন্তর্ভুক্ত হওয়ার পরে এর অর্থ হ'ল প্রত্যাশিত অবস্থায় সকেটের অত্যধিক সকেটের কারণে ( TIME_WAITবা কম সম্ভবত FIN_WAIT_1বা FIN_WAIT_2)

সকেট পোর্টের পরিসীমা আউটপুট হতে পারে cat /proc/sys/net/ipv4/ip_local_port_range। স্টক লিনাক্স কার্নেলের ডিফল্ট মান সাধারণত হয় 32768 61000

netstat -ton|grep WAITসিস্টেম ব্যস্ত থাকাকালীন আপনি ক্লায়েন্ট (গুলি) এবং পিজবাউনসার হোস্টের ফলাফল পরীক্ষা করতে পারেন । -oপতাকা অপেক্ষার রাজ্যের সাথে সম্পর্কিত সময়সীমার কাউন্টারে প্রদর্শন করবে।

যদি টিসিপি সকেটের মোট সংখ্যা কাছে থাকে 61000-32768=28232তবে এই ব্যাপ্তিটির ক্লান্তি সম্ভবত আপনার সমস্যা হতে পারে। যেহেতু একটি বদ্ধ সকেট TIME_WAITস্বাভাবিক অবস্থায় 60 সেকেন্ড রাজ্যে ব্যয় করে , যদি ক্লায়েন্ট হোস্ট এক মিনিটের মধ্যে 28232 বারের বেশি সংযোগ করে, বন্দরগুলি মুক্ত না হওয়া পর্যন্ত নতুন সংযোগ উল্লিখিত ত্রুটির সাথে ব্যর্থ হবে।

প্রথম কাজ হিসাবে, টিসিপি পোর্টের পরিধি বাড়ানো যেতে পারে:

 # echo "1025 65535" >/proc/sys/net/ipv4/ip_local_port_range

যদি সন্তোষজনক নয়, চেক tcp_tw_recycleএবং tcp_tw_reuseপতাকা, এছাড়াও মাধ্যমে সুরেলা /proc/sys/net/ipv4এবং sysctl

এগুলি (থেকে man tcp) হিসাবে সংজ্ঞায়িত করা হয়েছে :

       tcp_tw_reयकल (বুলিয়ান; ডিফল্ট: অক্ষম; লিনাক্স ২.৪ থেকে)
              TIME_WAIT সকেটের দ্রুত পুনর্ব্যবহারযোগ্য সক্ষম করুন। এটি সক্ষম করা হচ্ছে
              বিকল্পটি সুপারিশ করা হয় না কারণ এটি যখন কাজ করে তখন সমস্যা সৃষ্টি করে ‐
              NAT (নেটওয়ার্ক ঠিকানা অনুবাদ) এর সাথে আইএনজি।

       tcp_tw_reuse (বুলিয়ান; ডিফল্ট: অক্ষম; লিনাক্স ২.৪.১৯ / ২. since থেকে)
              নতুন সংযোগের জন্য TIME_WAIT সকেটগুলি পুনরায় ব্যবহার করার অনুমতি দিন
              প্রোটোকল দৃষ্টিকোণ থেকে নিরাপদ। এটি ছাড়া পরিবর্তন করা উচিত নয়
              প্রযুক্তি বিশেষজ্ঞদের পরামর্শ / অনুরোধ

tcp_tw_recycleকোনও মাইএসকিউএল ক্লায়েন্ট অ্যাপ্লিকেশনটির সাথে এই সমস্যার মুখোমুখি হওয়ার সাথে সাথে ব্যক্তিগতভাবে আমার সাফল্য ছিল , তবে এটি একটি সুপারিশ হিসাবে গ্রহণ করবেন না, টিসিপি সম্পর্কে আমার বোঝা সর্বোপরি পৃষ্ঠপোষক হওয়া।


1
এই উত্তরটি টিসিপি সম্পর্কে যে কোনও বাগ ত্রুটিযুক্ত বোঝা দেখায়। এটার জন্য ধন্যবাদ. আমি বন্দরের পরিসর বাড়িয়েছি এবং এর কোনও প্রভাব আছে কিনা তা দেখার জন্য এটি কিছু সময়ের জন্য চালিয়ে দিয়েছি। (আমি এটি সেট করার পরে কি আমার পুনরায় বুট করা দরকার?)
হেরেল

আমি মনে করি বন্দর বৃদ্ধি এটি করেছে। এখনও পর্যন্ত আমি কোনও ত্রুটি পাই নি। নেটট্যাট লাইনের মোটামুটি গণনা ক্লায়েন্টে 20K এর কাছাকাছি দেখায় তাই সেখান থেকে 28 কে ডিফল্ট সীমাটি দীর্ঘ নয়। তার জন্য ধন্যবাদ!
হেরেল

1
ভাল! আপনি সেটিং লাগাতে চান /etc/sysctl.confযেমন net.ipv4.ip_local_port_range = 1025 65535আছে এটা পুনরায় বুট জুড়ে থাকে।
ড্যানিয়েল ভ্যারিট

ধন্যবাদ। আমি তখন থেকে ত্রুটিগুলি পেয়েছি তবে এটি একটি নয় তাই এখনও ভাল। এটি কয়েক দিনের জন্য চালানো দেওয়া এবং অনুমতিটি পরিবর্তন করবে। আমি এখন পর্যন্ত এটি কাজ করে বলে মনে হচ্ছে কারণ অন্যান্য পরিবর্তনগুলি আমাকে ভয়
দেখায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.