মনে হচ্ছে আপনার অ্যাপ্লিকেশনটিতে আপনার একটি সংযোগ ফাঁস হয়েছে কারণ এটি পুলযুক্ত সংযোগগুলি বন্ধ করতে ব্যর্থ । আপনার কাছে কেবল <idle> in transaction
সেশনে সমস্যা হচ্ছে না , তবে সামগ্রিকভাবে অনেক সংযোগ রয়েছে।
সংযোগ হত্যা হত্যা এর সঠিক উত্তর নয়, তবে এটি একটি ঠিক-ইশ অস্থায়ী কর্মক্ষেত্র।
পোস্টগ্র্রেএসকিউএল ডেটাবেস থেকে অন্য সমস্ত সংযোগ বুট করার জন্য পোস্টগ্রেএসকিউএল পুনরায় শুরু করার পরিবর্তে দেখুন: আমি কীভাবে পোস্টগ্রিজ ডাটাবেস থেকে সমস্ত অন্যান্য ব্যবহারকারীকে আলাদা করব? এবং যদি কোনও পোস্টগ্রিজ এসকিউএল ডাটাবেসটিতে সক্রিয় সংযোগ থাকে তবে কীভাবে তা ড্রপ করবেন? । পরেরটি আরও ভাল কোয়েরি দেখায়।
সময়সীমা নির্ধারণের জন্য, যেমন @ দুন পরামর্শ দিয়েছেন পোস্টগ্রিএসকিউএল-এ নিষ্ক্রিয় সংযোগগুলি কীভাবে স্বয়ংক্রিয়ভাবে বন্ধ করবেন? , যা আপনাকে পোস্টগ্রেনসকিউএল-এর জন্য প্রক্সিতে পিজবাউনসার ব্যবহার করতে এবং নিষ্ক্রিয় সংযোগগুলি পরিচালনা করতে পরামর্শ দেয়। আপনার যদি কোনও বগি অ্যাপ্লিকেশন থাকে যা যেভাবেই সংযোগ ফাঁস করে দেয় এটি খুব ভাল ধারণা; আমি খুব দৃ strongly়ভাবে পিজবউনসার কনফিগার করার পরামর্শ দিচ্ছি।
একটি টিসিপি রক্ষণশীল এখানে কাজ করবে না, কারণ অ্যাপটি এখনও সংযুক্ত এবং জীবিত, এটি ঠিক হওয়া উচিত নয়।
PostgreSQL 9.2 এবং এর উপরে, আপনি নিষ্ক্রিয় সংযোগের রিপার প্রয়োগ করতে নতুন state_change
টাইমস্ট্যাম্প কলাম এবং state
ক্ষেত্রটি ব্যবহার করতে পারেন pg_stat_activity
। ক্রোন জব এর মতো কিছু চালান:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'regress'
AND pid <> pg_backend_pid()
AND state = 'idle'
AND state_change < current_timestamp - INTERVAL '5' MINUTE;
পুরানো সংস্করণগুলিতে আপনাকে জটিল স্কিমগুলি প্রয়োগ করতে হবে যা কখন সংযোগটি নিষ্ক্রিয় হয়ে গেছে তার উপর নজর রাখে। বিরক্ত কর না; কেবল পিজবউনসার ব্যবহার করুন।