محتوای آموزشی وبلاگ نتآرام
وقتی سایت شلوغ است، ممکن است کسی پیشنهاد کند «تعداد 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 توضیح داده شده است؛ وجود این گزینه به معنی دسترسی یا کاربرد یکسان آن در همه میزبانها نیست. اگر نیازهای فروشگاه افزایش یافته، هاست پربازدید را بر پایه گزارش واقعی بررسی کنید.برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
