উত্তর:
আপনি pg_stat_activity
সিস্টেম সারণীটি ব্যবহার করে কোনও সিস্টেম প্রসেস আইডির সাথে একটি নির্দিষ্ট পোস্টগ্রিস ব্যাকএন্ড আইডি মেলাতে পারেন ।
SELECT pid, datname, usename, query FROM pg_stat_activity;
একটি ভাল সূচনা পয়েন্ট হতে পারে।
একবার আপনি কী জিজ্ঞাসা চলছে তা জানতে পারলে আপনি আরও তদন্ত করতে পারবেন ( EXPLAIN
/ EXPLAIN ANALYZE
; লকগুলি পরীক্ষা করুন ইত্যাদি)
WHERE
ধারা দিয়ে আলাদা করতে পারেন , তবে আপনার কাছে যদি প্রচুর পিআইডি না থাকে ঠিক তেমনই সম্পূর্ণ আউটপুট মাধ্যমে অনুসন্ধান করা সহজ। পোস্টগ্র্রেস ম্যানুয়ালটিতে আপনি কীভাবে বেরিয়ে আসতে পারবেন সে সম্পর্কে অতিরিক্ত বিশদ রয়েছেpg_stat_activity
, পাশাপাশি অন্যান্য পরিসংখ্যান-সংগ্রহকারী সারণী (যা আপনার সমস্যাটি যদি কোনও ব্যবহারকারী জিজ্ঞাসা না হয় তবে আপনাকে সহায়তা করতে পারে )।
আমি একই সমস্যা ছিল। পোস্টগ্র্যাস্কলটি এডাব্লুএস আরডিএসে সেটআপ করা হয়েছে এবং উদাহরণটি বাড়ানোর পরেও এটি 100% সিপিইউ ব্যবহার করছে। আমি এখানে প্রদর্শিত পদ্ধতিটি দিয়ে ডিবাগ করেছি এবং সেই পদ্ধতির একটি আমার পক্ষে কাজ করেছে।
আমি দীর্ঘতম সময়ের জন্য চলমান ক্যোয়ারীর জন্য চেক করেছি এবং জানতে পেরেছিলাম যে নির্দিষ্ট প্রশ্নগুলি আটকে রয়েছে এবং ৩-৪ ঘন্টােরও বেশি সময় ধরে চলছে। কোয়েরিটি কত সময় চলছে তা যাচাই করতে নিম্নলিখিত কমান্ডটি চালান:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
এটি যদি এক ঘণ্টার বেশি হয় তবে এর চেয়ে বেশি সমস্যা। দীর্ঘ চলমান সংযোগটি হত্যা করুন এবং অ্যাপ্লিকেশন দিক থেকে সংযোগের সর্বাধিক বয়স সীমাবদ্ধ করুন।
যদি এটি সত্যই সমস্ত সিপিইউ ব্যবহার করে পোস্টমাস্টার হয় তবে সম্ভবত আপনার খুব বেশি উচ্চতার কারণে সম্ভবত লক বিবাদ সংক্রান্ত সমস্যা রয়েছে max_connections
। max_connections
যদি কেসটি হয় তবে একটি সংযোগ পুলার কমিয়ে ব্যবহার এবং বিবেচনা করুন ।
অন্যথায়: বিশদ, দয়া করে। top -b -n 1
একটি শুরুর জন্য সম্পূর্ণ আউটপুট ।
postgress
হয়postgres
এবং আপনি এটি দ্বারা হাত কপি করেছি।