/ Var / লগ / বার্তাগুলির সাহায্যে স্মৃতি ডিবাগ অফ আউট


42

নিম্নলিখিত বার্তাটি আমার বার্তাগুলি লগের মধ্যে ফেলে দেওয়া হয়েছে:

kernel: Out of memory: Kill process 9163 (mysqld) score 511 or sacrifice child
kernel: Killed process 9163, UID 27, (mysqld) total-vm:2457368kB, anon-rss:816780kB, file-rss:4kB

কোন ব্যাপার না এই সমস্যার জন্য হলে httpd, mysqldবা postfixকিন্তু আমি জানতে আগ্রহী কিভাবে আমি সমস্যা ডিবাগ চালিয়ে যেতে পারেন না।

পিআইডি 9163 কেন হত্যা করা হয়েছে সে সম্পর্কে আমি আরও কীভাবে তথ্য পেতে পারি এবং আমি নিশ্চিত নই যে লিনাক্স কোথাও সমাপ্ত পিআইডিগুলির জন্য ইতিহাস রাখে।

যদি এটি আপনার বার্তা লগ ফাইলে ঘটে তবে আপনি কীভাবে পদক্ষেপে এই সমস্যাটির সমাধান করবেন?

# free -m

             total       used       free     shared    buffers     cached
Mem:          1655        934        721          0         10         52
-/+ buffers/cache:        871        784
Swap:          109          6        103`

সমস্যা সম্পর্কে সমস্ত বার্তা কি প্রদর্শিত হবে dmesg?
Stark07

ওওএম সম্পর্কে দরকারী বিশদ - লিনাক্স- মিম.আর.অর্গ / ওম_কিলার
SLM

উত্তর:


57

এই ঘটনার আগে কার্নেলটি একগুচ্ছ পদার্থে লগইন করবে, তবে /var/log/messagesএটি কীভাবে (r)syslogdকনফিগার করা হয়েছে তার উপর নির্ভর করে এর বেশিরভাগ অংশই সম্ভবত থাকবে না । চেষ্টা করুন:

grep oom /var/log/*
grep total_vm /var/log/*

প্রাক্তনটির বেশ কয়েকবার সময় এবং দ্বিতীয়টি কেবল এক বা দুটি স্থানে দেখা উচিত। এই ফাইলটি আপনি দেখতে চান That

যে ফাইলগুলি রয়েছে সেগুলির মধ্যে একটির মধ্যে মূল "মেমরির বাইরে" লাইনটি সন্ধান করুন total_vm। এই লাইনের আগে ত্রিশ থেকে এক মিনিট (আরও বেশি হতে পারে, কমও হতে পারে) আপনি এর মতো কিছু পাবেন:

kernel: foobar invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

আপনাকে এই জাতীয় শিরোনাম সহ সেই রেখার সাথে "মেমরির বাইরে" লাইনের মধ্যে কোথাও একটি সারণীও খুঁজে পাওয়া উচিত:

[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name

এটি আপনাকে ইতিমধ্যে জানার চেয়ে আরও বেশি কিছু না জানাতে পারে তবে ক্ষেত্রগুলি হ'ল:

  • পিডি প্রক্রিয়া আইডি।
  • uid ব্যবহারকারী আইডি।
  • tgid থ্রেড গ্রুপ আইডি।
  • টোটাল_ভিএম ভার্চুয়াল মেমরি ব্যবহার (4 কেবি পৃষ্ঠায়)
  • আরএসএস রেসিডেন্ট মেমোরি ব্যবহার (4 কেবি পৃষ্ঠায়)
  • nr_ptes পৃষ্ঠা সারণী এন্ট্রি
  • অদলবদল অদলবদল
  • oom_score_adj সাধারণত 0; একটি কম সংখ্যার ইঙ্গিত দেয় যে ওওএম কিলারকে ডাকা হলে প্রক্রিয়াটি মারা যাওয়ার সম্ভাবনা কম থাকে।

আপনি বেশিরভাগ উপেক্ষা করতে পারেন nr_ptesএবং swapentsযদিও আমি বিশ্বাস করি যে এগুলি কে মারা গেছে তা নির্ধারণের কারণ। এটি অগত্যা সর্বাধিক স্মৃতি ব্যবহার করে প্রক্রিয়া নয়, তবে এটি সম্ভবত খুব সম্ভবত। নির্বাচন প্রক্রিয়া সম্পর্কে আরও তথ্যের জন্য, এখানে দেখুন । মূলত, সর্বোচ্চ ওম স্কোর দিয়ে শেষ হওয়া প্রক্রিয়াটি মারা যায় - এটি "মেমরির বাইরে" লাইনে রিপোর্ট করা "স্কোর"; দুর্ভাগ্যক্রমে অন্যান্য স্কোরগুলি প্রতিবেদন করা হয়নি তবে সেই টেবিলটি উপাদানগুলির ক্ষেত্রে কিছু সংকেত সরবরাহ করে।

আবার সম্ভবত এটি সুস্পষ্ট আলোকিত করার চেয়ে আরও বেশি কিছু করবে না: সিস্টেমটি স্মৃতিশক্তি থেকে দূরে mysqldছিল এবং মরে যেতে বেছেছিল কারণ এটি হত্যা করা সর্বাধিক সংস্থানকে মুক্তি দেবে । এর অর্থ এই নয় যে mysqldকোনও ভুল করা। আপনি টেবিলে দেখতে পারেন যে সময়ে অন্য কিছু লাইন থেকে বেরিয়ে গেছে কি না, তবে কোনও পরিষ্কার অপরাধী হতে পারে না: কেবলমাত্র আপনি চলমান প্রক্রিয়াগুলিকে ভুল বুঝায় বা ভুল কনফিগার করেছেন বলে সিস্টেমটি মেমরির বাইরে চলে যেতে পারে।


5
dmesgএটি হ'ল গ্যারান্টিযুক্ত। এটি কেবল তখনই আসবে /var/logযখন সিসলগ ডেমন পড়তে পারে /dev/kmsg(এটি সাধারণত এটি করা হয়)।
প্যাট্রিক

2
@ পেট্রিক যা আপনি কখন দেখতে যান তার উপর নির্ভর করে । যদি এটি একটি সাধারণ ফাইল লগের মধ্যে রেকর্ড করা থাকে (এটি হওয়া উচিত, বা আপনি আপনার লগারটি নিয়ে বোকা কিছু করেছেন) তবে এটি দীর্ঘ সময় ধরে থাকবে, যদিও এই মুহুর্তে, ওপি যদি একটি সমস্যা চিহ্নিত করেছে গতকাল, বা তার আগের দিন ইত্যাদি, dmesgসিস্টেমটি চালু রেখে দেওয়া হলেও রেকর্ডটি আর নাও থাকতে পারে ।
স্বর্ণলোকগুলি

6

- এই চাবিকাঠি বার্তাটি নিজেই হয় মেমরি আউট । লিনাক্স কার্নেলটি ভার্চুয়াল মেমরির (শারীরিক র‌্যাম প্লাস অদলবদল) অনাহারিত হয়ে গেলে এটি প্রক্রিয়া হ্রাস করতে শুরু করবে এবং ঠিক এখানেই ঘটেছে। দেখে মনে হচ্ছে এটি mysqld2 গিগাবাইটেরও বেশি ভার্চুয়াল মেমরি ব্যবহার করছে।

সিস্টেমে কতটা র‌্যাম এবং অদলবদল রয়েছে? আমি অতিরিক্ত র‌্যাম যুক্ত করার বিষয়টি বিবেচনা করব বা যদি তা সম্ভব না হয় তবে অতিরিক্ত অদলবদল যুক্ত করব। অন্তত প্রক্রিয়াগুলি বন্ধ হওয়া থেকে রোধ করার দ্রুত সমাধান হিসাবে আপনি একটি স্যুপ ফাইল যুক্ত করতে পারেন।

আপডেট: আপনার যে পরিমাণ র‌্যাম রয়েছে তা দেখে আপনি তত্ক্ষণাত সমস্যাটি দেখতে পাচ্ছেন। আপনার কাছে ~ 1.6 গিগাবাইট র্যাম এবং 100MB অদলবদল রয়েছে এখনও মাইএসকিউএল এর চেয়ে অনেক বেশি র‌্যাম ব্যবহার করছে। এটি ব্যাখ্যা করে যে আপনি কেন প্রক্রিয়াগুলি সমাপ্ত হতে দেখছেন।


total used free shared buffers cached Mem: 1655 934 721 0 10 52 -/+ buffers/cache: 871 784 Swap: 109 6 103 প্রক্রিয়াটি মারা যাওয়ার সময় এটি একই সময়ে মেমরির আউটপুট
ইবিডেলোভস্কি

আপনি কি ফর্ম্যাটিংটি ধরে রেখে মূল বার্তায় এটি আটকে দিতে পারবেন? এটি পড়া সহজ করে তুলবে।
mjturner

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