Skip to content
VDS · সমস্যা সমাধান

CPU 100%-এ

CPU কোর খাচ্ছে এমন প্রসেস কীভাবে খুঁজবেন, প্রকৃত লোড ও ডিস্ক ওয়েট আলাদা করবেন এবং কোড ঠিক করবেন না উচ্চতর টিয়ারে যাবেন তা কীভাবে সিদ্ধান্ত নেবেন।

আপডেট: ২৩ আগস্ট, ২০২৬

“Overview” ট্যাবে CPU গ্রাফের একটি প্লেটো নিজে থেকে কোনো জরুরি অবস্থা নয়: কোনো প্রজেক্ট বিল্ড করা বা আর্কাইভ তৈরি করা সৎভাবেই সব কোর ব্যবহার করবে এবং পরে সেগুলো ছেড়ে দেবে। উদ্বেগের বিষয় হলো যখন প্লেটোটি ঘণ্টার পর ঘণ্টা স্থায়ী হয় এবং মেশিন সাড়া দেওয়া বন্ধ করে দেয়। চলুন জেনে নিই এর জন্য কী দায়ী।

ধাপ ১. দেখুন কী রিসোর্স ব্যবহার করছে

ফুল-স্ক্রিন প্রোগ্রাম নিয়ে কাজ করার জন্য “Screen” (VNC) ট্যাবটি সুবিধাজনক:

btop
htop

সিরিয়াল কনসোল উইন্ডোর আকার পাস করে না; সেখানে সবসময় 80×24 থাকে, তাই ইন্টারফেস কেটে যাবে। টেক্সট কনসোলের জন্য স্ট্যান্ডার্ড কমান্ডগুলো ব্যবহার করুন:

top -b -n1 | head -20
ps aux --sort=-%cpu | head -10

গণিতটা মনে রাখুন: %CPU প্রতি কোরের হিসেবে গণনা করা হয়। VDS-3-এ 400% মানে চারটি কোরই, আর VDS-4-এ 100% মানে ছয়টির মধ্যে মাত্র একটি।

ধাপ ২. CPU-কে ডিস্ক থেকে আলাদা করুন

অ্যাভারেজ লোড (load average) শুধু গণনা থেকেই নয়, I/O ওয়েট থেকেও বাড়ে:

uptime
vmstat 1 5

vmstat-এর আউটপুটে us (ইউজার কোড), sy (কার্নেল), wa (ডিস্ক ওয়েট) এবং st (স্টোলেন টাইম) কলামগুলো দেখুন। বড় wa মানে CPU ডিস্কের জন্য অপেক্ষা করে বসে আছে — 병নেক আসল bottleneck হলো রাইট স্পিড, গণনা নয়। আমাদের টিয়ারগুলোতে ডিস্কের প্লেটো একটি নিয়ম দ্বারা নির্ধারিত: প্রতি কোরের জন্য 60 MB/s রাইট, 60-এর কম নয় এবং 400 MB/s-এর বেশি নয়, রিড তার দ্বিগুণ, এবং প্লেটোর তিন গুণ বেশি একটি বার্স্ট 30 সেকেন্ড স্থায়ী হয়। যদি কোনো টাস্ক একটানা লেখে, বার্স্ট শেষ হবে এবং আপনি প্লেটোতে পৌঁছে যাবেন।

ধাপ ৩. নির্দিষ্ট প্রসেস তদন্ত করুন

pidstat -p <pid> 1 5
cat /proc/<pid>/status
journalctl -u <service> -n 100 --no-pager

সাধারণ কিছু পাওয়া যায়:

  • একটি ওয়েব অ্যাপ্লিকেশন ব্যর্থ রিকোয়েস্টের পর অসীম লুপে ঘুরছে;
  • ডেটাবেস ইনডেক্স ছাড়া একটি কোয়েরি চালাচ্ছে — এর নিজস্ব স্লো কোয়েরি লগ দেখুন;
  • একটি cron জব শেষ হওয়ার আগেই আরও ঘন ঘন শুরু হচ্ছে, এবং ইনস্ট্যান্স জমা হচ্ছে: ps aux | grep <name> এক ডজন কপি দেখাবে;
  • দুর্বল root পাসওয়ার্ডের মাধ্যমে মেশিনে ঢুকে পড়া একটি মাইনার। লক্ষণ হলো অর্থহীন নামের একটি প্রসেস যা নন-স্ট্যান্ডার্ড ইউজারের অধীনে চলছে এবং আউটগোয়িং ব্যান্ডউইথ বেশি। এক্ষেত্রে পরিষ্কার করার চেয়ে “Access” ট্যাব থেকে মেশিনটি রিইনস্টল করা সহজ।

ধাপ ৪. সীমিত করুন, হত্যা করবেন না

যদি প্রসেসটি প্রয়োজনীয় হয় কিন্তু বাকিগুলোতে বাধা দেওয়া উচিত না:

renice -n 15 -p <pid>
systemctl set-property myapp.service CPUQuota=200%

CPUQuota=200% মানে দুটি পূর্ণ কোর। systemd-এর সীমা সার্ভিস রিস্টার্টের পরেও টিকে থাকে; renice থাকে না।

kill -9 দিয়ে কোনো প্রসেস হত্যা করার আগে সাধারণ systemctl stop চেষ্টা করুন। ডেটাবেস জোরপূর্বক হত্যা করলে ফাইল নষ্ট হওয়া এবং পরের বার শুরুতে দীর্ঘ রিকভারির মূল্য দিতে হয়।

যখন কোড দায়ী নয়

যদি লোড বৈধ এবং স্থির হয়, তাহলে Ryzen 9 7950X CPU তার কাজ করছে — কেবল টাস্কের জন্য যথেষ্ট কোর নেই। টিয়ার শুধু উপরের দিকে পরিবর্তন করা যায়, পরিশোধিত সময়ের বাকি দিনগুলোর জন্য অতিরিক্ত পেমেন্টসহ: দেখুন আপনার প্ল্যান আপগ্রেড করা এবং পার্থক্য পরিশোধ করা নিবন্ধটি। নিচের দিকে ফিরিয়ে আনা সম্ভব নয়, তাই প্রথমে সপ্তাহ ও মাসের গ্রাফ থেকে নিশ্চিত করুন যে প্লেটোটি একবারের ঘটনা নয়।