পোস্টগ্রিজ এবং পোস্টমাস্টার পরিষেবাগুলি থেকে উচ্চ সিপিইউ ব্যবহারের সমস্যা সমাধানের?


28

আমি একটি ওপেন সোর্স (RHEL 6.2) ভিত্তিক মেশিনটি সিম সফটওয়্যারটি চালাচ্ছি। আমি যখন topকমান্ডটি চালনা করি , তখন আমি দেখতে পাই postgresএবং postmasterউভয়ই 96% সিপিইউ ব্যবহার সহ। পিন-পয়েন্ট করার কোনও উপায় আছে বা দেখার জন্য কী কী কারণে এই পরিষেবাগুলি স্তূপীকৃত হয়?


2
"আরএইচসিই 6.2"? আপনি কি "RHEL 6.2" বোঝাতে চান? আমি অনুমান postgressহয় postgresএবং আপনি এটি দ্বারা হাত কপি করেছি।
ক্রেগ রিঞ্জার

উত্তর:


30

আপনি pg_stat_activityসিস্টেম সারণীটি ব্যবহার করে কোনও সিস্টেম প্রসেস আইডির সাথে একটি নির্দিষ্ট পোস্টগ্রিস ব্যাকএন্ড আইডি মেলাতে পারেন ।

SELECT pid, datname, usename, query FROM pg_stat_activity;একটি ভাল সূচনা পয়েন্ট হতে পারে।
একবার আপনি কী জিজ্ঞাসা চলছে তা জানতে পারলে আপনি আরও তদন্ত করতে পারবেন ( EXPLAIN/ EXPLAIN ANALYZE; লকগুলি পরীক্ষা করুন ইত্যাদি)


এটাই কি সঠিক জিজ্ঞাসা, আমি সিবিতে কাজ করা সেকেন্ড লোক হিসাবে আপনার ডিবিটির সাথে খুব বেশি পরিচিত নই, আপনার নির্বাচনী বিবৃতি, আমাকে কি শীর্ষ কমান্ড থেকে পিড খাওয়াতে হবে?
আসাদজ

1
@ আসাদজ না, এটি কেটে গেছে (এখনই ঠিক করা হয়েছে) - আপনার যদি নির্দিষ্ট পিআইডি থাকে এবং তারা কী চালাচ্ছেন তা দেখতে চাইলে আপনি তাদের একটি WHEREধারা দিয়ে আলাদা করতে পারেন , তবে আপনার কাছে যদি প্রচুর পিআইডি না থাকে ঠিক তেমনই সম্পূর্ণ আউটপুট মাধ্যমে অনুসন্ধান করা সহজ। পোস্টগ্র্রেস ম্যানুয়ালটিতে আপনি কীভাবে বেরিয়ে আসতে পারবেন সে সম্পর্কে অতিরিক্ত বিশদ রয়েছেpg_stat_activity , পাশাপাশি অন্যান্য পরিসংখ্যান-সংগ্রহকারী সারণী (যা আপনার সমস্যাটি যদি কোনও ব্যবহারকারী জিজ্ঞাসা না হয় তবে আপনাকে সহায়তা করতে পারে )।
voretaq7

যখন আমি এই কোয়েরিটি সম্পাদন করি, এমন কোনও পিআইডি নেই যা আমার সন্দেহ করতে পারে
Fendi Tri Cahyono

ক্লুটির
ইয়াও

14

আমি একই সমস্যা ছিল। পোস্টগ্র্যাস্কলটি এডাব্লুএস আরডিএসে সেটআপ করা হয়েছে এবং উদাহরণটি বাড়ানোর পরেও এটি 100% সিপিইউ ব্যবহার করছে। আমি এখানে প্রদর্শিত পদ্ধতিটি দিয়ে ডিবাগ করেছি এবং সেই পদ্ধতির একটি আমার পক্ষে কাজ করেছে।

আমি দীর্ঘতম সময়ের জন্য চলমান ক্যোয়ারীর জন্য চেক করেছি এবং জানতে পেরেছিলাম যে নির্দিষ্ট প্রশ্নগুলি আটকে রয়েছে এবং ৩-৪ ঘন্টােরও বেশি সময় ধরে চলছে। কোয়েরিটি কত সময় চলছে তা যাচাই করতে নিম্নলিখিত কমান্ডটি চালান:

SELECT max(now() - xact_start) FROM pg_stat_activity
                               WHERE state IN ('idle in transaction', 'active');

এটি যদি এক ঘণ্টার বেশি হয় তবে এর চেয়ে বেশি সমস্যা। দীর্ঘ চলমান সংযোগটি হত্যা করুন এবং অ্যাপ্লিকেশন দিক থেকে সংযোগের সর্বাধিক বয়স সীমাবদ্ধ করুন।


8

যদি এটি সত্যই সমস্ত সিপিইউ ব্যবহার করে পোস্টমাস্টার হয় তবে সম্ভবত আপনার খুব বেশি উচ্চতার কারণে সম্ভবত লক বিবাদ সংক্রান্ত সমস্যা রয়েছে max_connectionsmax_connectionsযদি কেসটি হয় তবে একটি সংযোগ পুলার কমিয়ে ব্যবহার এবং বিবেচনা করুন ।

অন্যথায়: বিশদ, দয়া করে। top -b -n 1একটি শুরুর জন্য সম্পূর্ণ আউটপুট ।


এই অর্থে; যেহেতু সিমটি বিশ্লেষক দ্বারা প্রচুর ডেটা এবং পিছনে জিজ্ঞাসা করার জন্য ব্যবহৃত হয়; লক স্থিতি পরীক্ষা করতে পারে এমন কোন উপায় আছে; বা শর্ত এটির জন্য দায়ী; ?
আসাদজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.