উচ্চ সার্ভার লোড - [jbd2 / md1-8] 99.99% আইও ব্যবহার করে


12

আমি গত এক সপ্তাহ ধরে ভার বাড়িয়েছি। এটি সাধারণত দিনে একবার বা দু'বার ঘটে। আমি iotop থেকে সনাক্ত করতে সক্ষম হয়েছি যে [jbd2 / md1-8] 99.99% IO ব্যবহার করছে। উচ্চ লোডের সময় সার্ভারে কোনও উচ্চ ট্র্যাফিক নেই।

সার্ভারের চশমা হ'ল:

  • এএমডি ওপ্টারন 8 কোর
  • 16 জিবি র‌্যাম
  • 2x2.000 জিবি 7.200 আরপিএম এইচডিডি সফ্টওয়্যার রেড 1
  • ক্লাউডলিনাক্স + সিপানেল
  • মাইকিউএল সঠিকভাবে সুর করা হয়

স্পাইকগুলি ছাড়াও লোড সাধারণত প্রায় 0.80 এর কাছাকাছি থাকে।

আমি চারপাশে অনুসন্ধান করেছি কিন্তু [jbd2 / md1-8] ঠিক কি করে তা খুঁজে পাচ্ছি না। কারও কি এই সমস্যা আছে বা কেউ কি এর সম্ভাব্য সমাধান জানতে পারে?

ধন্যবাদ.

হালনাগাদ:

TIME        TID     PRIO     USER    DISK READ    DISK WRITE    SWAPIN  IO       COMMAND
16:05:36     399     be/3    root    0.00 B/s      38.76 K/s    0.00 %  99.99 %  [jbd2/md1-8]

1
en.wikipedia.org/wiki/Journaling_block_device & linux.die.net/man/4/md এই হচ্ছে সফ্টওয়্যার এর সাথে সম্পর্কিত, RAID বিন্দু।
mbrownnyc

আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. কিছু খনন করার পরে আমি দেখতে পেলাম যে এটি সফটওয়্যার RAID এর সাথে সম্পর্কিত। আপনি কি এর কোন সমাধান জানেন? অদ্ভুত জিনিসটি যা ঘটতে শুরু হয়েছিল মাত্র এক সপ্তাহ আগে, প্রায় 3 মাস কোনও সমস্যা ছাড়াই।
অ্যালেক্স

আপনি কীভাবে আইও 99.99% নির্ধারণ করেছেন? আপনি ব্যবহার করেছেন iostat? আপনি কি এর কিছু চালাতে পারেন (বলুন iostat 5) কিছুক্ষণের জন্য এবং আউটপুট ভাগ করে নিতে?
slm

আমি আইওটপের জন্য লগিং সক্ষম করেছি এবং ব্যবধানের জন্য লগটি দেখেছি যে লোডটি ঘটেছে। এখন লোড কম তাই এখন এটি চালানোর কোনও অর্থ নেই, তবে পরের বার যখন ঘটে তখন আমি এটি করব। আপনার উত্তর দেওয়ার জন্য ধন্যবাদ.
অ্যালেক্স

1
আমি ঠিক এই সঠিক সমস্যা মধ্যে দৌড়ে। আপনার চূড়ান্ত সমাধানটি কি শেষ হয়েছিল?
শয়তানীপপি

উত্তর:


18

সঠিক কারণ জানাতে পর্যাপ্ত প্রসঙ্গ না থাকায় এটি সত্যই কোনও উত্তর নয়, তবে আমার সাথে যখন ঘটেছিল তখন আমি কীভাবে এটি ট্র্যাক করতে পেরেছিলাম তার বর্ণনা এটি।

আমি আমার jbd2/md0-8শীর্ষে প্রদর্শিত রাখা লক্ষ্য iotop/sys/kernel/debug/tracing/events/jbd2কী করছে তা নির্ধারণের জন্য বিকল্পগুলি কী কী রয়েছে তা দেখার জন্য আমি সন্ধান করলাম jbd2

নোট -১: ডিবাগ ট্রেসিং ইভেন্টগুলির আউটপুট দেখতে cat /sys/kernel/debug/tracing/trace_pipe- ট্রেসগুলি সক্ষম / অক্ষম করার সময় আমার এটি টার্মিনালে চলছিল।

নোট -২: ব্যবহারের জন্য ট্রেসিং ইভেন্টগুলি সক্ষম করতে যেমন echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable। অক্ষম করা echo 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable

আমি সক্ষম /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enableকরেই শুরু করেছিলাম - তবে এর আউটপুটটিতে বিশেষ আকর্ষণীয় বলে মনে হচ্ছে এমন কিছুই ছিল না। আমি অন্যান্য কয়েকটি ইভেন্টের সন্ধান করার চেষ্টা করেছি এবং যখন আমি সক্ষম /sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enableহয়েছি তখন দেখলাম এটি প্রতি সেকেন্ডে ঘটে চলেছে:

# cat /sys/kernel/debug/tracing/trace_pipe
...
jbd2/md0-8-2520  [004] .... 658660.216492: jbd2_commit_flushing: dev 9,0 transaction 32856413 sync 0
jbd2/md0-8-2520  [001] .... 658661.334900: jbd2_commit_flushing: dev 9,0 transaction 32856414 sync 0
jbd2/md0-8-2520  [001] .... 658661.394113: jbd2_commit_flushing: dev 9,0 transaction 32856415 sync 0

এটি দেখে মনে হয়েছিল এটি sync(2)/ fsync(2)/ এর সাথে সম্পর্কিত msync(2), তাই আমি এটি একটি প্রক্রিয়ার সাথে সংযুক্ত করার জন্য কিছু উপায় খুঁজলাম এবং এটি পেয়েছি:

# find /sys/kernel/debug/tracing/events/ | grep sync.*enable
...
/sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable
...

যখন আমি এটি সক্ষম করেছি তখন আমি নিম্নলিখিত ফলাফলটি দেখেছি:

# cat /sys/kernel/debug/tracing/trace_pipe
...
      nzbget-17367 [002] .... 658693.222288: ext4_sync_file_enter: dev 9,0 ino 301924373 parent 301924357 datasync 1 
  jbd2/md0-8-2520  [001] .... 658693.284080: jbd2_commit_flushing: dev 9,0 transaction 32856465 sync 0
      nzbget-17367 [000] .... 658693.334267: ext4_sync_file_enter: dev 9,0 ino 301924357 parent 301924353 datasync 1 
  jbd2/md0-8-2520  [002] .... 658693.334275: jbd2_commit_flushing: dev 9,0 transaction 32856466 sync 0
      nzbget-17367 [001] .... 658694.369514: ext4_sync_file_enter: dev 9,0 ino 301924367 parent 301924357 datasync 1 
  jbd2/md0-8-2520  [002] .... 658694.414861: jbd2_commit_flushing: dev 9,0 transaction 32856467 sync 0
      nzbget-17367 [001] .... 658694.470872: ext4_sync_file_enter: dev 9,0 ino 301924357 parent 301924353 datasync 1 
  jbd2/md0-8-2520  [002] .... 658694.470880: jbd2_commit_flushing: dev 9,0 transaction 32856468 sync 0

এটি আমাকে প্রক্রিয়াটির নাম / আইডি দিয়েছে - এবং এই প্রক্রিয়াটির আরও কিছু ডিবাগিংয়ের পরে ( nzbget) আমি আবিষ্কার করেছি যে এটি fsync(2)প্রতি সেকেন্ডে করছে । FlushQueue=noপ্রতি সেকেন্ডে এটি করা থেকে বিরত রাখার জন্য আমি এর কনফিগারটি পরিবর্তন করার পরে ( , Undocumented আমার মনে হয়, এটি উত্স হিসাবে এটি খুঁজে পেয়েছিল) fsync(2)সমস্যাটি চলে যায়।

আমার কার্নেল সংস্করণটি। 4.4.6-gentooআমি মনে করি এই ইভেন্টগুলি সাথে make oldconfigপেতে কার্নেল কনফিগারেশনের কোনও পর্যায়ে আমি সক্ষম হয়েছি এমন কিছু বিকল্প ছিল (ম্যানুয়ালি বা সহ ) /sys/kernel/debug- তাই আপনার যদি না থাকে তবে সক্ষম করার বিষয়ে আরও তথ্যের জন্য কেবল ইন্টারনেটে ঘুরে দেখুন এটা।


সুন্দর sleuthing। এটি খুব সহায়ক।
jdhildeb

সমস্ত প্রক্রিয়া বিস্তারিত জানার জন্য অনেক ধন্যবাদ!
অ্যাস্ট্রজুয়ানলু

1

এটি জার্নাল আপডেট সম্পর্কিত জিনিস বলে মনে হচ্ছে। সফ্টওয়্যার RAID দ্বারা গঠিত কতগুলি ডিস্ক। আপনি এটি তৈরি করতে ব্যবহৃত আদেশটি আমাকে দেখাতে পারেন?

আপনি ডাম্প 2 এফএস আউটপুট পেস্টবিন করতে পারেন? প্রথমে আপনি যেখানে শারীরিক যন্ত্র বোঝা দেখেন তা সনাক্ত করুন identify এটি জানতে df ব্যবহার করুন। তারপর,

dumpe2fs /dev/sdaX > /tmp/dump

আপনার ক্ষেত্রে এটি / dev / md0 হতে পারে।

এছাড়াও, এটি চালান।

iostat -xdk 1 25

হাই আইও ইস্যুর সময়।

আমি ক্লাউডলিনাক্স জানি না তবে এটির নীচে উপলব্ধ সরঞ্জাম ব্লকট্রেস।


হাই সোহম, আপনার জবাবের জন্য ধন্যবাদ। অ্যারেতে 2 টি ডিস্ক রয়েছে। Dumpe2fs হিসাবে আপনি কি আমাকে চালাতে চান পুরো কমান্ড দিতে পারেন? সাহায্য করার জন্যে ধন্যবাদ.
অ্যালেক্স

অ্যালেক্স, উত্তর সম্পাদনা।
সোহম চক্রবর্তী

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