পোস্টগ্রিসে সর্বোচ্চ সংযোগগুলি কীভাবে বাড়ানো যায়?


108

আমি আমার পণ্যটির জন্য পোস্টগ্রিস ডিবি ব্যবহার করছি। স্লিক 3 ব্যবহার করে ব্যাচ সন্নিবেশ করানোর সময়, আমি একটি ত্রুটি বার্তা পাচ্ছি:

org.postgresql.util.PSQLException: FATAL: দুঃখিত, ইতিমধ্যে অনেক বেশি ক্লায়েন্ট।

আমার ব্যাচ সন্নিবেশ অপারেশন হাজার হাজার রেকর্ডের বেশি হবে। আমার পোস্টগ্রাগের জন্য সর্বাধিক সংযোগ 100

কীভাবে সর্বোচ্চ সংযোগ বাড়ানো যায়?



পিজবাউন্টার বা পিজিপুলের মতো একটি সংযোগ পুলটি ব্যবহার করুন
ফ্র্যাঙ্ক হিকেন্স

2
1. আপনার মিডলওয়্যারটি খুব বেশি সংযোগ খোলা রাখছে না, বা সেগুলি ফাঁস করছে কিনা তা প্রথমে পরীক্ষা করে দেখুন। ২ ((সম্ভবত) পরবর্তী কোনও সংযোগ পুলার ব্যবহার করুন। ৩. (প্রায়) কখনও এই ধরণের সমস্যায় অনুমোদিত সংযোগের সংখ্যা বাড়ান না, বেশিরভাগ ক্ষেত্রে এটি বিষয়টিকে আরও খারাপ করে দেবে। (-setup যদি জিজ্ঞেস করা হয় পুরোপুরি নিশ্চিত)
Joop

উত্তর:


220

শুধু বাড়ানো max_connectionsখারাপ ধারণা। আপনি বৃদ্ধি প্রয়োজন shared_buffersএবং kernel.shmmaxহিসাবে ভাল।


বিবেচ্য বিষয়

max_connectionsডাটাবেস সার্ভারে একযোগে সংযোগগুলির সর্বাধিক সংখ্যা নির্ধারণ করে। ডিফল্টটি সাধারণত 100 টি সংযোগ।

আপনার সংযোগের সংখ্যা বাড়ানোর আগে আপনাকে আপনার মোতায়েনের পরিমাণ বাড়ানো দরকার। তবে তার আগে, আপনার সত্যিকারের বর্ধিত সংযোগের সীমা দরকার কিনা তা বিবেচনা করা উচিত।

প্রতিটি পোস্টগ্রাইএসকিউএল সংযোগটি সংযোগ পরিচালনা করতে বা ক্লায়েন্টটি ব্যবহার করার জন্য র‌্যাম গ্রহণ করে। আপনার যত সংযোগ রয়েছে, তত বেশি র্যাম আপনি ব্যবহার করবেন এটি পরিবর্তে ডাটাবেস চালানোর জন্য ব্যবহার করা যেতে পারে।

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


কীভাবে সর্বোচ্চ সংযোগ বাড়ানো যায়

1. বৃদ্ধি max_connectionএবংshared_buffers

ভিতরে /var/lib/pgsql/{version_number}/data/postgresql.conf

পরিবর্তন

max_connections = 100
shared_buffers = 24MB

প্রতি

max_connections = 300
shared_buffers = 80MB

shared_buffersকনফিগারেশন পরামিতি নির্ধারণ করে কত স্মৃতি হয় নিবেদিত জন্য ব্যবহার করতে পোস্টগ্রি করার তথ্য ক্যাশে

  • আপনার যদি 1GB বা আরও বেশি র‍্যাম সহ একটি সিস্টেম থাকে তবে আপনার সিস্টেমের মেমরির 1/4 ভাগের_যুক্ত বাফারগুলির জন্য একটি যুক্তিসঙ্গত প্রারম্ভিক মান।
  • অল্প পরিমাণের চেয়ে ভাল কাজ করার জন্য আপনি 40% র‍্যাম ব্যবহার করতে পারবেন না (যেমন 25%)
  • আপনার সিস্টেম বা পোস্টগ্রিসকিউএল বিল্ডটি যদি 32-বিট হয় তবে 2_ GB 2.5 জিবি-র উপরে ভাগ করা_বাফলার সেট করা ব্যবহারিক নাও হতে পারে সে সম্পর্কে সচেতন থাকুন।
  • নোট করুন যে উইন্ডোজে, শেয়ার্ড_বাফারগুলির জন্য বৃহত্তর মানগুলি কার্যকর হিসাবে কার্যকর নয় এবং আপনি এটি অপেক্ষাকৃত কম রাখার পরিবর্তে ওএস ক্যাশেটির পরিবর্তে আরও ভাল ফলাফল পেতে পারেন। উইন্ডোজটিতে দরকারী পরিসীমাটি 64MB থেকে 512MB পর্যন্ত

2. কার্নেল.শ্মম্যাক্স পরিবর্তন করুন

এর চেয়ে কিছুটা বড় হওয়ার জন্য আপনাকে কার্নেল সর্বাধিক সেগমেন্টের আকার বাড়াতে হবে shared_buffers

ফাইলটিতে /etc/sysctl.confপ্যারামিটারটি নীচে প্রদর্শিত হিসাবে সেট করুন। postgresqlপুনরায় বুট করার সময় এটি কার্যকর হবে (নিম্নলিখিত লাইনটি কার্নেলকে সর্বাধিক করে তোলে 96Mb)

kernel.shmmax=100663296

তথ্যসূত্র

সর্বাধিক সংযোগ এবং ভাগ করা বাফারগুলি পোস্টগ্র্যাগ করে

আপনার পোস্টগ্রিএসকিউএল সার্ভার টিউন করছে


দুর্দান্ত উত্তর কয়েকটি প্রশ্ন .. 100663296 96MB এর সমান কিভাবে? এবং কেন আমরা shmmax পরিবর্তন করব যে এটি করে?
রব্বো_ইউকি

3
100663296 বাইটস = 96 এমবি (বাইনারিতে) shmmax একটি ভাগ করা মেমরি বিভাগের সর্বাধিক আকার । এখন যেহেতু আমরা ভাগ করা বাফারগুলির আকার বাড়িয়েছি আমাদের ক্যাচিংয়ের জন্য বর্ধিত মেমরিটি সংযুক্ত করতে shmmax পরিবর্তন করতে হবে।
অঙ্কিত

1
@ রব্বো_উইকি 96 * 1024 * 1024 = 100663296
স্ক্রবেবল

6
আপনি আপনার সিস্টেমের জন্য এই সেটিংস নির্ধারণ করতে সহায়তা করতে PGTune ব্যবহার করতে পারেন
Yoan টর্নেড

11
cat /proc/sys/kernel/shmmaxএটির পরিবর্তন করার আগে আপনার বর্তমান কার্নেল.শ্মম্যাক্স সেটিংটি পরীক্ষা করুন । আধুনিক সিস্টেমে এটি ইতিমধ্যে হাস্যকর উচ্চ সেট করেছে এবং এটি পরিবর্তন করা উচিত নয়। আমার 18446744073692774399উবুন্টু 18.04 এ ডিফল্টভাবে সেট করা আছে ।
কার্ল জুলাউফ

30

উইনির দুর্দান্ত উত্তরে যোগ করা,

যদি কেউ আপনার সেটআপে postgresql.conf ফাইলের অবস্থানটি সন্ধান করতে না পারে তবে আপনি সর্বদা পোস্টগ্রেস নিজেই জিজ্ঞাসা করতে পারেন।

SHOW config_file;

আমার জন্য একাকী সর্বোচ্চ_সংযোগগুলি কৌশলটি তৈরি করেছিল।


2
ধন্যবাদ. উবুন্টু 18.04 এ এটি/etc/postgresql/11/main/postgresql.conf
gies0r

1

/ var / lib / pgsql / ডেটা বা / usr / স্থানীয় / pgsql / ডেটা / এ অবস্থিত postgresql.conf ফাইলটিতে সর্বাধিক সংযোগগুলি পরিবর্তনশীল পরিবর্তন করুন


2
Pg_hba.conf কেন? সংযোগের সংখ্যা সম্পর্কে এটির কোনও পরামিতি নেই, কেবল কীভাবে সংযোগ করবেন। অন্যদিকে postgresql.conf .... তবে কয়েকশ সংযোগ একটি খারাপ ধারণা, এটি করবেন না, একটি সংযোগ পুল ব্যবহার করুন বা পারফরম্যান্স সমস্যার কারণে ভুগবেন। পোস্টগ্রিসকিউএল 8.3 হ'ল বহু বছরের জন্য EOL, দয়া করে একটি আপ টু ডেট সংস্করণ ব্যবহার করুন।
ফ্র্যাঙ্ক হিকেন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.