উচ্চ সিপিইউ ব্যবহারের অ্যাপাচি প্রক্রিয়াটি আসলে কী করছে তা সন্ধান করুন?


18

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

শীর্ষে চলার সময়, আমরা নিম্নলিখিতটি দেখতে পাই:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
20788 www-data  20   0  318m  18m 3984 R  100  0.0  40:29.21 /usr/sbin/apache2 -k start
23523 www-data  20   0  319m  20m 4684 R  100  0.0   4:12.36 /usr/sbin/apache2 -k start

আমি কোন স্ক্রিপ্ট (বা এটি যাই হোক না কেন) এর ফলে কী ঘটছে তা চেষ্টা করে দেখতে চাই, তাই আমি চেষ্টা করেছি:

 strace -p 20788

তবে এটি কোনও আউটপুট দেখায় না (আমি এটি প্রায় 10 মিনিটের জন্য রেখে দিয়েছি, এবং এটি কিছুই দেখায় না)। আমার বোঝার থেকে, এর অর্থ এটি অসীম লুপে আটকে আছে এবং দেখানোর জন্য কোনও "সিস্টেম কল" নেই।

যা চলছে তা দেখাতে আমি আরও কিছু করতে পারি?

ধন্যবাদ

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

সম্পাদনা 2 - পিএইচপি - - সক্ষম ডিবেগ দিয়ে কনফিগার না করা অবস্থায় জিডিবি থেকে ব্যাকট্রেস (বিটি) সমস্ত দরকারী বলে মনে হয় না - এটি কেবল "এক্সিকিউট ()" দেখায় তবে পিএইচপি স্ক্রিপ্টটি কী তা আমার জানতে হবে আসলে দৌড়ানো .. অন্য কোন উপায় আছে?

#0  0x00007f6c143fb0c5 in ?? () from /usr/lib/apache2/modules/libphp5.so
#1  0x00007f6c143b040b in execute () from /usr/lib/apache2/modules/libphp5.so
#2  0x00007f6c1438b970 in zend_execute_scripts () from     /usr/lib/apache2/modules/libphp5.so
#3  0x00007f6c14337fe3 in php_execute_script () from     /usr/lib/apache2/modules/libphp5.so
#4  0x00007f6c1441ae7d in ?? () from /usr/lib/apache2/modules/libphp5.so
#5  0x00007f6c18912508 in ap_run_handler ()
#6  0x00007f6c1891297e in ap_invoke_handler ()
#7  0x00007f6c18922570 in ap_process_request ()
#8  0x00007f6c1891f398 in ?? ()
#9  0x00007f6c18918fa8 in ap_run_process_connection ()
#10 0x00007f6c189271d0 in ?? ()
#11 0x00007f6c1892793a in ?? ()
#12 0x00007f6c189284e7 in ap_mpm_run ()
#13 0x00007f6c188fd4a4 in main ()

1
অ্যাপাচি "গ্রেফুল" পুনঃসূচনা সমর্থন করে, তবে আপনি কেন করবেন না?
পিজি

1
আমি মনে করি যখন আমরা এটি আগে চেষ্টা করেছি, "আটকে" অ্যাপাচি প্রক্রিয়াগুলির কারণে এটি কৃপণভাবে পুনরায় আরম্ভ করা যায়নি ... যদিও এটি ভুল হতে পারে, এটি কিছুক্ষণ আগে ছিল।
বিটি 643

আরেকটি কৌশলটি হ'ল বিভিন্ন বন্দরে অ্যাপাচের আরেকটি উদাহরণ চালানো, এতে নতুন সংযোগ পুনর্নির্দেশ করা।
পোজ

উত্তর:


9

ভাল, আপনি যদি সাহসী বোধ করেন তবে:

gdb -p 20788

তারপরে btস্ট্যাক-ফ্রেম দেখতে ইস্যু করুন , উদাহরণস্বরূপ

এবং বিটিডাব্লু, ltraceউল্লেখ করারও আছে - এটিও চেষ্টা করে দেখুন।

UPD। : ঠিক আছে, ঠিক আছে, যেহেতু এখন থেকেই আমাদের ধারণা রয়েছে যে আপাচি সত্যিই কিছু চালাচ্ছে, তবে আপনি কেন mod_statusআউটপুটটি দেখবেন না - প্রসারিত ?


জিডিবি ইনস্টল করা হয়নি :( আমি কোনও সমস্যা না করেই ইনস্টল করতে পারি কিনা তা দেখার জন্য আমি আগামীকাল কাজে ফিরে না যাওয়া পর্যন্ত অপেক্ষা করতে হবে .. ltraceকোনও
আউটপুটও দেখায়নি

সেক্ষেত্রে প্রাথমিক পোস্টে জিডিবি বিটি থেকে ফলাফলগুলি যুক্ত করা হয়েছে .. সত্যিই আমাকে কিছু বলবেন না!
বিটি 643

ওহ, আমি সঠিক দিকনির্দেশনার পরামর্শ দিয়ে খুশি হয়েছি। )
পাইজ

@ বিটি 64৪৩৩, ইউপিডি দেখুন।
পিজি

4
উপলব্ধ মোড_স্ট্যাটাসটি ইতিমধ্যে ডিফল্টরূপে সক্ষম হয়েছিল, এটি কেবল 127.0.0.1 থেকে অ্যাক্সেসের মধ্যে সীমাবদ্ধ। আমি কেবল এসএসএইচ এর মাধ্যমে লগ ইন করেছি এবং আউটপুটটি একটি ফাইলে পাইপ করেছিলাম curl domain.com/server-status > randomfile.html- তারপরে ফাইলটি দেখলাম । দেখা গেল এটি একটি পুরানো বিকাশকারী কোড একটি লুপ (পিএইচপি ফাইল) এ আটকে যাচ্ছিল! সব এখন সাজানো। সহায়তার জন্য ধন্যবাদ :)
বিটি 3৪৩

2

একটি খুব সহজ পদ্ধতির ব্যবহার হয় htop। আপনি উচ্চ সিপিইউ প্রক্রিয়াগুলি বাছাই করতে পারেন এবং তারপরে ব্যবহার করতে পারেন

  • জন্য গুলি straceএকটি প্রক্রিয়া
  • আমি lsofএকটি প্রক্রিয়া খোলা ফাইল দেখতে জন্য
  • এল টু ltrace

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


1

আপনি চেষ্টা করতে পারেন:

  • iotop (সিস্টেমে I / O দেখানো হচ্ছে)
  • নেটস্প্যাট-টি (সংযোগ দেখানো হচ্ছে)
  • অ্যাপাচি লগ-ফাইলে একবার দেখুন এবং সার্ভারটি কী শেষ করেছে তা সন্ধান করুন
  • অ্যাপাচি প্রক্রিয়াটির জন্য কিছু আর-লিমিট সেট করুন। এই সীমাটি পৌঁছে গেলে প্রক্রিয়াটি হত্যা করা হবে, আপনাকে আরও কিছু তথ্য দেবে

0

আপনার এই আদেশটি কার্যকর করা উচিত যদি আপনি এইচডিটিপি অনুরোধ করেন যা সেই পিআইডি ট্রিগার করে।

সম্ভবত আপনি কেবলমাত্র একটি শিশু প্রক্রিয়া দিয়ে অ্যাপাচি অস্থায়ীভাবে পুনরায় কনফিগার করতে চান?


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

এটি শতভাগ সহকারী ব্যবহারকারীদের সাথে একটি লাইভ সার্ভার হিসাবে এটি করতে পারছে না (এটি আগে পরিষ্কার ছিল না বলে এটি ওপিতে যুক্ত করেছে)
ওপিতে বিটি 3৪৩

0

সেই অ্যাপাচি উদাহরণটির পিআইডি কম, এটি সমস্ত কিছুর পিতা হতে পারে। এটি অবশ্যই উচ্চ সিপিইউর ব্যবহারটি ব্যাখ্যা করবে (এটি প্রায় থাকে, অন্যরা লোভ অনুসারে তৈরি হয় এবং পুনরায় স্মরণ করা হয়)। অনেকটা সঞ্চিত সিপিইউর অর্থ সম্ভবত এটি দীর্ঘদিন ধরে চলছে। কোনও আউটপুট strace(1)কেবলমাত্র এর অর্থ কোনও সিস্টেম কল করেনি। হ্যাঁ, এটি কোনও শক্ত লুপে থাকতে পারে তবে অ্যাপাচি মূলত 'নেট'র উপরে আই / ও, তাই আমি মনে করি এটি কার্যকর কোনও কাজ করছে না। যে কোনও ক্ষেত্রে একটি সিপিইউর 100% অদ্ভুত।


লো পিআইডি এর অর্থ এটি একটি পুরানো প্রক্রিয়া নয়। পিআইডিগুলির সর্বাধিক মান থাকে এবং চারপাশে মোড়ানো যাতে কম পিআইডি ব্যবহার করে নতুন প্রক্রিয়া তৈরি করা যায়।
অস্টিনিয়ান

0

এটা চেষ্টা কর:

1) তারিখ / সময়, পিএইচপি স্ক্রিপ্ট এবং পিআইডি ব্যবহার করে একটি লগ শুরু করুন getmypid()

2) তারপরে আপনার সার্ভারটি দেখুন top

3) যখন আপনি দেখছেন যে অ্যাপাচি প্রক্রিয়াটি উচ্চতর হচ্ছে, একই লগ / সময় এবং আপনার লগগুলিতে পিআইডি অনুসন্ধান করুন। আপনার সমস্যাযুক্ত স্ক্রিপ্টটি সন্ধান করা উচিত।


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