voretaq7 এর উত্তর মূল পয়েন্টগুলি সহ, ব্যাকেন্ডগুলি সমাপ্ত করার সঠিক উপায় সহ তবে আমি আরও একটি ব্যাখ্যা যুক্ত করতে চাই more
kill -9
(অর্থাত্ SIGKILL
) কখনও কখনও কখনও আপনার প্রথম পছন্দ ডিফল্ট হওয়া উচিত নয় । প্রক্রিয়াটি যখন সাধারণ শাটডাউন অনুরোধগুলিতে সাড়া না দেয় এবং এটি SIGTERM
( kill -15
) এর কোনও প্রভাব পড়ে না তখন এটি আপনার শেষ অবলম্বন হওয়া উচিত । এটি পিজির সত্য এবং আরও অনেক কিছু।
kill -9
নিহত প্রক্রিয়াটিকে কোনও ক্লিনআপ করার কোনও সুযোগ দেয় না।
পোস্টগ্র্রেএসকিউএল এর কথা এলে, পিজি এমন একটি ব্যাকড দেখতে পায় যা kill -9
ব্যাকড ক্র্যাশ হিসাবে শেষ হয় । এটি জানে যে ব্যাকএন্ডে শেয়ার্ড মেমোরিটি দূষিত হতে পারে - কারণ আপনি একটি পৃষ্ঠার shm লিখতে বা একটি পরিবর্তন করার মাধ্যমে অর্ধেক পথ এটিকে বাধা দিতে পারতেন, উদাহরণস্বরূপ - সুতরাং এটি যখন ব্যাকএন্ড হঠাৎ নিখোঁজ হয়ে গেছে তখন লক্ষ্য করা যায় যে এটি সমস্ত অন্যান্য ব্যাককেন্ড সমাপ্ত করে এবং পুনরায় চালু করে it এবং একটি শূন্য-ত্রুটি কোড সহ প্রস্থান করা হয়েছে।
আপনি লগগুলিতে এই প্রতিবেদনিত দেখতে পাবেন।
যদি এটি কোনও ক্ষতি না করে বলে মনে হয়, কারণ পিজ ক্র্যাশ হওয়ার পরে সবকিছু পুনরায় চালু করছে এবং আপনার অ্যাপ্লিকেশনটি হারিয়ে যাওয়া সংযোগগুলি পরিষ্কারভাবে পুনরুদ্ধার করছে। এটি এটি একটি ভাল ধারণা তৈরি করে না। যদি পিজির স্বাভাবিক-কার্যকরী অংশগুলির তুলনায় ব্যাকেন্ড ক্র্যাশগুলি আরও কম ভালভাবে পরীক্ষা করা হয় এবং আরও জটিল / বৈচিত্র্যময় হয়, তাই ব্যাকএন্ড ক্র্যাশ হ্যান্ডলিং এবং পুনরুদ্ধারের ক্ষেত্রে বাগ লুকানোর সম্ভাবনা বেশি।
বিটিডাব্লু, আপনি যদি kill -9
পোস্টমাস্টার হন তবে postmaster.pid
প্রতিটি postgres
ব্যাকএন্ড চলে গেছে তা নিশ্চিত না করে আবার মুছে ফেলুন এবং এটি আবার শুরু করুন , খুব খারাপ জিনিস ঘটতে পারে । এটি সহজেই ঘটতে পারে যদি আপনি ঘটনাক্রমে ব্যাকএন্ডের পরিবর্তে পোস্টমাস্টারকে হত্যা করেন, ডাটাবেসটি নীচে নেমে গেছে, এটি পুনরায় চালু করার চেষ্টা করেছে, পুনরায় আরম্ভ করতে ব্যর্থ হলে "বাসি" .pid ফাইলটি সরিয়ে নিয়ে আবার পুনরায় আরম্ভ করার চেষ্টা করলে এটি সহজেই ঘটতে পারে। পিজির kill -9
চারপাশে wেউ এড়ানো উচিত এমন একটি কারণ এবং এটি মুছে ফেলা উচিত নয় postmaster.pid
।
একটি প্রদর্শন:
আপনি kill -9
ব্যাকএন্ডে আসলে কী ঘটে তা দেখতে , এই সাধারণ পদক্ষেপগুলি ব্যবহার করে দেখুন। দুটি টার্মিনাল খুলুন, প্রতিটিটিতে এবং প্রতিটি রানে পিএসকিএল খুলুন SELECT pg_backend_pid();
। অন্য টার্মিনালে kill -9
একটি পিআইডি। এখন SELECT pg_backend_pid();
আবার দুটি পিএসএইচএল সেশনে চালান । তারা উভয় তাদের সংযোগ হারিয়ে কীভাবে লক্ষ্য করুন ?
সেশন 1, যা আমরা হত্যা করেছি:
$ psql regress
psql (9.1.4)
Type "help" for help.
regress=# select pg_backend_pid();
pg_backend_pid
----------------
6357
(1 row)
[kill -9 of session one happens at this point]
regress=# select pg_backend_pid();
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
regress=# select pg_backend_pid();
pg_backend_pid
----------------
6463
(1 row)
অধিবেশন 2, যা জামানত ক্ষতি ছিল:
$ psql regress
psql (9.1.4)
Type "help" for help.
regress=# select pg_backend_pid();
pg_backend_pid
----------------
6283
(1 row)
[kill -9 of session one happens at this point]
regress=# select pg_backend_pid();
WARNING: terminating connection because of crash of another server process
DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT: In a moment you should be able to reconnect to the database and repeat your command.
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
regress=# select pg_backend_pid();
pg_backend_pid
----------------
6464
(1 row)
উভয় অধিবেশনটি কীভাবে ভেঙে গেছে দেখুন? এজন্য আপনি kill -9
ব্যাকএন্ড করবেন না ।