امروز یه مشکل برخوردم. وب سایت به روزرسانی شده بود و یکی از اسکریپت های به روز رسانی شده دردسر درست کرده بود. هر از گاهی php میزان مصرف cpu اش میرسید به 100 درصد، ولی نمی دونستیم کدوم اسکریپته. لازم بود که سیستم را یه مدت کوتاه بزارم زیر مانیتور تا هر موقع درخواستی بیش از ۵۰ درصد cpu را مصرف کرد، لاگ بگیره.
برای همین نیاز به ابزاری برای لاگ کردن درخواست های php و میزان مصرف cpu شون داشتیم. شاید بپرسید خوب یه top باز کن ببین!
یکی اینکه هر از گاهی این اتفاق می افتاد و تا می اومد برم بررسی کنم مصرف cpu عادی می شد و نمی تونستم بفهمم مشکل کجاست.
سوال: به چه شکل درخواست های cpu بر php یک وب سایت را پیدا کنم؟
جواب: نیاز به ابزاری آماده نیست، با استفاده از ابزارهای موجود bash و چند تا دستور کنار هم می تونید به شکل زیر به نتیجه مورد نظرتون برسید:
while true; do ps faxuewwww -we | grep php | grep –color “^www-data” | tr -s ‘ ‘ | cut -f 1,3,10- -d ” “| while read user cpu proc; do if [ “${cpu%.*}” -ge “50” ]; then echo “$cpu $proc” >> /tmp/php.log; fi ; done; sleep 2 ; done
بزارید این دستور یه مدت کار کنه و بعد فایل tmp/php.log/ را بررسی کنید. دقت کنید که فرض بر این شده که وب سرور شما داره با کاربر www-data اجرا شده است.