পিজি_স্যান্সেল_ব্যাকেন্ডে কাজ না করলে আমি কী করব?


8

যদি আমার দীর্ঘকাল ধরে চলমান পোস্টগ্রিজ কোয়েরি থাকে এবং নিয়মিত "কিল [পিড]" কাজ করে না, এবং পিজি_স্যান্সেল_ব্যাকএন্ড কাজ করে না, আমার কী করা উচিত?

উত্তর:


8

আপনি উচিত না kill -9 কোনো postgres প্রক্রিয়া যদি না আপনার লক্ষ্যে সমগ্র সার্ভার ডাউন জোরপূর্বক আনা হয়। আপনি যে কোনও প্রক্রিয়াটি শেল থেকে পিজি_স্যান্সেল_ব্যাকএন্ড () কলটির প্রতিক্রিয়া না জানিয়ে হত্যা করতে পারেন

kill <pid>

অর্থাৎ -9 নয়। নোট করুন যে আমি কয়েকবার দেখেছি যেখানে এমনকি কোনও নেটওয়ার্ক সংযোগের ডেটার জন্য কিছু লুপের জন্য অপেক্ষা করার প্রক্রিয়াটির কারণে এটি কাজ করে না। আমি যদি সঠিকভাবে স্মরণ করি তবে ক্লায়েন্ট প্রক্রিয়াটিকে হত্যা করা এটি যত্ন নিয়েছে।


8

http://www.postgresql.org/docs/current/static/server-shutdown.html

পিজি_স্যান্সেল_ব্যাকেন্ড প্রসেসে SIGINT প্রেরণের সমতুল্য।
পিজি_টারনেট_ব্যাকএন্ড একইভাবে SIGTERM- এর জন্য, তবে যদি pg_cancel_backend কাজ করছে না আমি পিজি_মিটারমিট_ব্যাকএন্ড কেন করব তা দেখছি না।

আপনি যদি এই বিকল্পগুলি ব্যবহার করে দেখে থাকেন তবে আপনি SIGQUIT চেষ্টা করতে পারেন। দস্তাবেজগুলি বলে, " এটি কেবল জরুরী পরিস্থিতিতেই সুপারিশ করা হয়। "

(আপনি যদি নিজের ডেটা ঘৃণা করেন এবং আশা করেন এটি মারা যায়, আপনি সিক্কিল ব্যবহার করতে পারেন But তবে আমি তা করব না))

আপনি killসরাসরি বা ব্যবহার করতে পারেন pg_ctl kill


+1 পোস্টগ্রাইএসকিউএল প্রতিটি সংযোগ প্রতি একটি প্রক্রিয়া ব্যবহার করে, যাতে আপনি অন্যান্য সংযোগগুলিকে প্রভাবিত করার ঝুঁকি ছাড়াই কোনও প্রক্রিয়াটিকে মেরে ফেলতে পারেন। আমি ডেটা দুর্নীতির কোনও সম্ভাবনা আছে কিনা তা নিশ্চিত নই, তবে আমি সত্যই সন্দেহ করব doubt
ডেভিড প্যাশলে 22

আমি ভেবেছিলাম পোস্টগ্রিস প্রক্রিয়াতে কিল -9 পাঠানো বিপর্যয়কর ছিল, এটি ডাটাবেসটিকে পুনরুদ্ধার মোডে রাখতে পারে যা এটি কয়েক মিনিটের জন্য কমিশনের বাইরে নিতে পারে।

1
stackoverflow.com/questions/920956/… মনে হচ্ছে আমি ভুল।
বুবলি

এই লিঙ্কটি সার্ভারে কিল -9 প্রেরণ সম্পর্কিত । আমি একটি একক ক্যোয়ারির পিডের কথা বলছি। নাকি সেই একই জিনিস?

2
@ ব্রিবলস আপনার পোস্টে একটি সতর্কতা যুক্ত করুন! যদি চেষ্টা করা হয় তবে সিগুয়েট মারাত্মক সমস্যা সৃষ্টি করবে। আমি সবেমাত্র করেছি এবং এটির ফলে প্রচুর সমস্যা দেখা দিয়েছে - আমি আশা করি সময় মতো ফিরে যেতে পারব এবং এন্টার কীটি চাপানো থেকে নিজেকে আটকাতে পারব!
এডিটিসি

3

আপনার যদি সাম্প্রতিক পোস্টগ্রিস থাকে তবে আপনি pg_terminate_backendপরিবর্তে চেষ্টা করতে পারেন ।


1

উপরের তার বিবৃতিতে ঘুষগুলি সঠিক ...

যদি আপনি SHUTDOWNসার্ভারে চেষ্টা করছেন তবে আমার জন্য:

আমি কেবল অবসরপ্রাপ্ত ডেটাবেস / স্কিমাসগুলি অপসারণের চেষ্টা করছি, এর এখনও একটি দীর্ঘসূত্রতা রয়েছে যা এটি চলতে দেবে না।

সুতরাং, আপনার প্রশ্নের উত্তর দিতে,

আমার যদি দীর্ঘদিন ধরে চলমান পোস্টগ্রিজ কোয়েরি থাকে ...

পিজি_স্যান্সেল_ব্যাকেন্ড কাজ করে না ...

আমার কি করা উচিৎ?

কোনওভাবেই সার্ভারটি বন্ধ করার সাথে সম্পর্কিত নয়

pg_cancel_backend()কাজ না করার এই আচরণও দেখেছি । এবং আমার কাজের সমাধান ভাগ করে নিতে চেয়েছিলেন।

আমি কোনও সমস্যা এখনও পর্যন্ত দেখিনি, কোনও ধরণের ডেটা "ক্ষয়" রয়েছে with

আবার, আমি কোয়েরিও মারার চেষ্টা করছি না Active

- আমি 777777 এর একটি সেশন বা পিআইডি দিয়ে ব্যবহারকারী "এ" হিসাবে লগ ইন করেছি।

- এবং 123456789 হিসাবে খোলার USER "এ" থেকে অন্য সেশনটি সংযোগ বিচ্ছিন্ন করার চেষ্টা এবং জোর করে চলেছে

- যা একটি ঘুমন্ত সংযোগ, এবং সে কারণেই আমি idleনীচে আমার অনুসন্ধানগুলিতেও সন্ধান করি।

SELECT * 
FROM pg_stat_activity 
WHERE pid = 123456789 
      AND STATE = 'idle';

- চেষ্টা 1

SELECT pg_cancel_backend(pid) 
FROM pg_stat_activity 
WHERE pid = 123456789 
      AND STATE = 'idle';

- আকর্ষণীয়ভাবে যথেষ্ট রেজাল্ট জানিয়েছে যে বাতিল হওয়া সত্য তবে এখনও বিদ্যমান।

SELECT * 
FROM pg_stat_activity 
WHERE pid = 123456789 
      AND STATE = 'idle';

- চেষ্টা 2

SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE pid = 123456789 
      AND STATE = 'idle';

- এবং এখন এর অস্তিত্ব নেই ..

SELECT * 
FROM pg_stat_activity 
WHERE pid = 123456789 
      AND STATE = 'idle';

- দ্রষ্টব্য: আমি লোককে অনুলিপি করা এবং আটকানো এবং তাদের জীবন নষ্ট থেকে বাঁচাতে সাহায্য করার জন্য হাস্যকর পিড ব্যবহার করার চেষ্টা করেছি।

- দ্রষ্টব্য: ডিফল্টরূপে পোস্টগ্রাগুলি কেবল আপনাকে ব্যবহারকারী হিসাবে আপনার লগিনের অধীনে চলমান প্রক্রিয়াগুলিকে হত্যা করতে দেয়,

- দ্রষ্টব্য: তবে আপনি এটি ইতিমধ্যে জানতেন।

আশাকরি এটা সাহায্য করবে. =)

~ জে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.