নিম্নলিখিত ত্রুটির ব্যাখ্যা:
org.postgresql.util.PSQLException: FATAL: sorry, too many clients already.
সারসংক্ষেপ:
আপনি ডাটাবেসে সংযোগের অনুমোদিত সীমা ছাড়িয়েও বেশি খোলেন। আপনি এই জাতীয় কিছু দৌড়েছিলেন: Connection conn = myconn.Open();
একটি লুপের অভ্যন্তরে, এবং চালাতে ভুলে গেছেন conn.close();
। কেবল আপনার শ্রেণি ধ্বংস হয়ে গেছে এবং সংগ্রহ করা আবর্জনা ডাটাবেসের সাথে সংযোগটি প্রকাশ করে না। এর দ্রুততম সমাধানটি হ'ল আপনার সাথে নিম্নলিখিত কোডটি রয়েছে তা নিশ্চিত করা যে কোনও শ্রেণি সংযোগ তৈরি করে:
protected void finalize() throws Throwable
{
try { your_connection.close(); }
catch (SQLException e) {
e.printStackTrace();
}
super.finalize();
}
যে কোডটি আপনি কোনও সংযোগ তৈরি করেন সেখানে সেই কোডটি রাখুন। তারপরে যখন আপনার শ্রেণি আবর্জনা সংগ্রহ করা হবে, তখন আপনার সংযোগটি ছেড়ে দেওয়া হবে।
পোস্টগ্র্যাসিকেল সর্বাধিক সংযোগ অনুমোদিত হওয়ার জন্য এই এসকিউএল চালান:
show max_connections;
ডিফল্টটি 100 হয় good ভাল হার্ডওয়ারের পোস্টগ্রিএসকিউএল একসাথে কয়েকশ সংযোগ সমর্থন করতে পারে। আপনি যদি হাজার হাজার থাকতে চান তবে আপনার সংযোগের ওভারহেড হ্রাস করতে সংযোগ পুলিং সফ্টওয়্যারটি ব্যবহার করা উচিত।
কে / কী / কখন / কোথায় আপনার সংযোগগুলি উন্মুক্ত করে রেখেছে তা একবার দেখুন:
SELECT * FROM pg_stat_activity;
বর্তমানে ব্যবহৃত সংযোগগুলির সংখ্যাটি হ'ল:
SELECT COUNT(*) from pg_stat_activity;
ডিবাগিং কৌশল
আপনি প্রোগ্রামগুলিতে বিভিন্ন ব্যবহারকারীর নাম / পাসওয়ার্ড দিতে পারেন যা এটি কোনটি সংযোগ প্রকাশ করতে পারে না এবং এটি পরে কী পরিষ্কার করছে না তা জানতে pg_stat_activity দেখুন।
সংযোগ তৈরি হতে না পারলে সম্পূর্ণ ব্যতিক্রম স্ট্যাক ট্রেস করুন এবং আপনি যেখানে নতুন তৈরি করবেন সেখানে কোডটি অনুসরণ করুন Connection
, আপনি যে সংযোগটি তৈরি করেছেন সেখানে প্রতিটি কোড লাইন শেষ হয়ে গেছে তা নিশ্চিত করুনconnection.close();
সর্বোচ্চ_ সংযোগগুলি কীভাবে উচ্চতর সেট করবেন:
postgresql.conf এ সর্বাধিক সংযোগগুলি ডাটাবেস সার্ভারে একযোগে সংযোগগুলির সর্বাধিক সংখ্যক সেট করে।
- প্রথমে আপনার postgresql.conf ফাইলটি সন্ধান করুন
- এটি কোথায় আছে তা যদি আপনি না জানেন তবে স্ক্যুয়াল দিয়ে ডাটাবেসটি জিজ্ঞাসা করুন:
SHOW config_file;
- আমার মধ্যে:
/var/lib/pgsql/data/postgresql.conf
- রুট হিসাবে লগইন করুন এবং সেই ফাইলটি সম্পাদনা করুন।
- স্ট্রিংটির জন্য অনুসন্ধান করুন: "সর্বাধিক_সংযোগ"।
- আপনি দেখতে পাবেন যে একটি লাইন
max_connections=100
।
- এই সংখ্যাটি বৃহত্তর সেট করুন, আপনার পোস্টগ্রেকসএল সংস্করণটির সীমা পরীক্ষা করুন।
- পরিবর্তনগুলি কার্যকর করতে postgresql ডাটাবেস পুনরায় চালু করুন।
সর্বাধিক সর্বোচ্চ_সংযোগগুলি কী?
এই প্রশ্নটি ব্যবহার করুন:
select min_val, max_val from pg_settings where name='max_connections';
আমি মানটি পেয়েছি 8388607
, তাত্ত্বিকেত্রে এটিই সর্বাধিক আপনার অনুমোদিত, তবে একটি পলাতক প্রক্রিয়া হাজার হাজার সংযোগ খেয়ে ফেলতে পারে এবং অবাক করে দেয়, আপনার ডাটাবেসটি পুনরায় বুট না হওয়া পর্যন্ত প্রতিক্রিয়াহীন। আপনার যদি 100 এর মতো বুদ্ধিমান সর্বাধিক সংযোগ থাকে তবে আপত্তিজনক প্রোগ্রামটি একটি নতুন সংযোগ অস্বীকার করবে।