وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

چرا زیاد کردن PHP Worker همیشه سرعت سایت را بهتر نمی‌کند؟

نقش تعداد پردازش‌های PHP، صف، حافظه و زمان پاسخ را پیش از افزایش ظرفیت هاست بشناسید.

انتشار:
توسط تیم فنی نت‌آرام
۳ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله چرا زیاد کردن PHP Worker همیشه سرعت سایت را بهتر نمی‌کند؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
وقتی سایت شلوغ است، ممکن است کسی پیشنهاد کند «تعداد PHP Worker را بیشتر کن». Worker را می‌توان کارگری دانست که درخواست PHP را انجام می‌دهد. اگر همه کارگرها مشغول باشند، درخواست تازه ممکن است منتظر بماند. اما زیادکردن کارگرها وقتی حافظه کافی نیست یا هر کار مدت زیادی منتظر دیتابیس می‌ماند، می‌تواند اوضاع را بدتر کند.

اول ببینید واقعاً صف وجود دارد یا نه

زمان کندی، نوع صفحه و تعداد خطاها را یادداشت کنید. اگر از PHP-FPM استفاده می‌شود، مدیر سرور می‌تواند وضعیت pool، پردازش‌های فعال و صف را در همان بازه بررسی کند. صفحه وضعیت FPM اطلاعات حساسی دارد و نباید عمومی و بدون کنترل دسترسی منتشر شود. اعداد تجمعی از زمان شروع سرویس هستند؛ یک مقدار قدیمی به‌تنهایی ثابت نمی‌کند همین الان صف وجود دارد.
در هاست اشتراکی نام و محدودیت قابل مشاهده ممکن است با PHP-FPM خام تفاوت داشته باشد. از پشتیبانی بخواهید دقیقاً بگوید کدام سقف حساب در زمان مشکل پر شده است.
برای یک نمونه قابل فهم، اگر وضعیت خصوصی FPM هنگام کندی listen queue: 4 و idle processes: 0 نشان دهد، در همان لحظه چهار درخواست در صف منتظر پردازش آزادند و هیچ پردازشی بیکار نیست. عدد max children reached را نیز با مقدار چند دقیقه قبل و زمان آخرین شروع سرویس مقایسه کنید؛ این عدد سابقه رسیدن به سقف را نشان می‌دهد و به‌تنهایی ثابت نمی‌کند همین لحظه صف وجود دارد. اگر دسترسی به صفحه وضعیت ندارید، از میزبان همین دو مقدار و زمان نمونه را بخواهید؛ برای نمایش آن، صفحه وضعیت را روی اینترنت عمومی باز نکنید. راهنمای وضعیت PHP-FPM معنی فیلدها را توضیح می‌دهد.

زمان هر درخواست مهم است

اگر یک درخواست به‌دلیل پرس‌وجوی کند یا تماس طولانی با سرویس بیرونی مدت زیادی مشغول می‌ماند، افزودن چند Worker شاید فقط تعداد بیشتری درخواست کند را هم‌زمان اجرا کند. گزارش زمان اجرای صفحه، دیتابیس و سرویس بیرونی را مقایسه کنید و نخست علت انتظار را پیدا کنید.

حافظه را در محاسبه فراموش نکنید

هر پردازش به حافظه نیاز دارد، اما مصرف دقیق برای همه درخواست‌ها یکسان نیست. مدیر سرور باید مصرف واقعی فرایندها، حافظه موردنیاز دیتابیس و دیگر سرویس‌ها و حاشیه مناسب را بر اساس همان سرور اندازه بگیرد. ضرب یک عدد فرضی در تعداد Worker بدون سنجش واقعی، برنامه ظرفیت قابل اتکایی نمی‌دهد.
اگر ظرفیت کافی وجود دارد و صف واقعاً به سقف می‌رسد، تغییر محدود و آزمایشی ممکن است کمک کند. مقدار قبلی و روش بازگشت را نگه دارید، زمان تغییر را ثبت کنید و پس از آن صف، خطا و حافظه را با همان بار مقایسه کنید. اعمال تغییر در سرویس زنده باید با برنامه مدیر سرور انجام شود.
مثلاً اگر هنگام کمپین صف بالا می‌رود، از مدیر بخواهید مدت پاسخ سبد خرید، تعداد خطا و حافظه آزاد را در همان چند دقیقه ثبت کند. پس از تغییر، همین سه عدد را در بازه‌ای با ترافیک مشابه دوباره بخوانید. اگر حافظه کم شد یا خطا بیشتر شد، طبق برنامه به مقدار قبلی برگردید و علت درخواست‌های طولانی را دنبال کنید.
در مستندات PHP-FPM گزینه pm.max_children برای حداکثر پردازش pool توضیح داده شده است؛ وجود این گزینه به معنی دسترسی یا کاربرد یکسان آن در همه میزبان‌ها نیست. اگر نیازهای فروشگاه افزایش یافته، هاست پربازدید را بر پایه گزارش واقعی بررسی کنید.
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام