تفاوت PHP Memory Limit و PHP Workers چیست؟
در توسعه وب، بیشتر هنگام استفاده از PHP، این دو جزء در تعیین میزان کارآمدی برنامه، حیاتی هستند. PHP workers مسئول پردازش وظایف و رسیدگی به درخواستها است، در حالی که PHP memory limit مرزهای مربوط به مقدار حافظهای که هر Worker میتواند استفاده کند، تعیین مینماید. درک نحوه مدیریت موثر هر دو میتواند عملکرد برنامه، پاسخگویی و تجربه کلی کاربر را بهبود بخشد.
افزایش تعداد PHP workers از 10 به 50 میتواند تاخیر درخواست و نرخ خطا را کاهش دهد. با استفاده از PHP workers و memory limit، زمان بارگذاری صفحه 65.7 درصد کاهش و تعداد تراکنش در دقیقه 183.3 درصد افزایش یافت.
PHP Workers چیست؟
PHP workers نقش مهمی در تعیین عملکرد سایت وردپرس دارند. این وُرکرها فرآیندهای پسزمینهای هستند که روی سرور اجرا شده و کد PHP را اجرا میکنند که عملکرد سایت را هدایت مینمایند. در وردپرس، این کارگران صفحات را میسازند، وظایف را مدیریت و صفحات HTML را برای بازدیدکنندگان تولید میکنند. PHP workers تعداد درخواستهای ذخیرهنشده را تعیین میکنند که سایت شما میتواند مدیریت کند. به طور همزمان هنگامی که یک PHP Worker راه اندازی میشود، تا زمانی که فرآیندها به پایان برسد یا معیارهای خاصی برآورده شود، فعال میماند. هنگامی که یک بازدیدکننده به سایت وردپرس شما دسترسی پیدا میکند، یک درخواست به سرور ارسال و توسط یک PHP worker پردازش میشود. اگر سایت شما دارای چندین PHP worker باشد، چندین درخواست به طور همزمان قابل رسیدگی است. به عنوان مثال، با دو PHP worker و پنج درخواست ورودی، دو درخواست بلافاصله پردازش میشوند، در حالی که سه درخواست باقی مانده در صف منتظر میمانند تا دو مورد اول تکمیل شود. این سیستم صف بندی ترافیک را مدیریت میکند، اما ناکافی بودن PHP workers میتواند باعث تاخیر و کندی زمان پاسخگویی در هنگام ترافیک بالا شود.
چرا به PHP Workers نیاز دارید؟
PHP workers درخواستهایی را مدیریت میکنند که کش وب سایت را دور زده یا از دست میدهند. هنگامی که یک درخواست مطابقت را در کش پیدا نمیکند، یک PHP worker برای پردازش آن وارد عمل شده و نتیجه را به عنوان یک صفحه وب به بازدید کننده برمیگرداند. ضروری است به خاطر داشته باشید که ظرفیت آنها برای کار نامحدود نیست و به عوامل مختلفی مانند تعداد
درخواستها و منابع سرور موجود بستگی دارد. این عوامل تعیین میکنند که سایت شما چه تعداد بازدید یا درخواست ذخیره نشده را به طور همزمان میتواند انجام دهد.
چه زمانی باید PHP Workers بیشتری اضافه کرد
تعداد PHP worker مورد نیاز به استفاده از کوئری دیتابیس، بهینه سازی کد و ترافیک دریافتی آن بستگی دارد. یک سایت بهینه شده با کد PHP کارآمد و کوئری دیتابیس، درخواستها را به سرعت پردازش و PHP workers را برای درخواستهای بعدی آزاد میکند. سایتهای داینامیک، مانند فروشگاههای آنلاین، انجمنها، پلتفرمهای یادگیری و سایتهای عضویت، در مقایسه با سایتهای استاتیک و به سبک بروشور، معمولا به PHP workers بیشتری نیاز دارند. علاوه بر این، سایتهایی با سطح ترافیک بالاتر معمولا به PHP workers بیشتری برای مدیریت بار افزایش یافته نیاز دارند. افزایش تعداد workers PHP میتواند ترافیک بالاتر را مدیریت کند و زمان انتظار پردازش درخواست را کاهش دهد. با این حال، متعادل کردن آن با منابع CPU و RAM موجود بسیار مهم است. اگر سرور فاقد CPU و RAM کافی برای پشتیبانی از workers اضافی PHP باشد، می تواند گلوگاه ایجاد کرده و منجر به مشکلات عملکردی شود.
نحوه اضافه کردن تعداد بیشتری از PHP workers
- وارد کنترل پنل سرور یا هاست شوید.
- فایل پیکربندی PHP-FPM (FastCGI Process Manager) را که اغلب به نام www.conf یا موارد مشابه نامیده میشود، پیدا کنید.
- مقادیر pm.max_children (حداکثر تعداد فرآیندهای PHP) را افزایش دهید و سایر تنظیمات مرتبط را در صورت نیاز تنظیم کنید.
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1
- تغییرات را اعمال و فایل پیکربندی را ذخیره کنید.
- برای اعمال تنظیمات جدید، PHP-FPM یا وب سرور را ریستارت کنید.
هنگام تنظیم تعداد PHP workers، توصیه میکنیم pm را روی static تنظیم کنید تا تعداد ثابتی از PHP workers همیشه برای رسیدگی به درخواستها در دسترس بوده و هزینههای اضافی مقیاسبندی داینامیک را به حداقل میرسانند.
مقدار pm.max_children تعداد فرآیندهای PHP worker را تعیین میکند. وقتی pm روی static تنظیم شده باشد، دیگر گزینهها نادیده گرفته میشوند، بنابراین نیازی به تغییر آنها نیست. اطمینان حاصل کنید که سرور شما منابع کافی برای مدیریت تعداد بیشتری از کارگران دارد.
محدودیت حافظه (PHP memory limit) چیست؟
هر بار که سایت شما یک صفحه را بارگذاری، یک افزونه را فعال یا از یک ویژگی تم استفاده میکند، اسکریپتهای PHP اجرا میشوند که برای عملکرد صحیح به حافظه نیاز دارند. PHP memory limit حافظه موجود در سایت وردپرس شما را مشخص میکند. شما به محدودیت حافظه PHP کافی نیاز دارید تا مطمئن شوید که سایت شما میتواند تمام وظایف خود را بدون مواجهه با مشکلاتی از قبیل:
- کندی بارگذاری صفحه: حافظه ناکافی میتواند اجرای اسکریپتهای PHP را به تاخیر بیاندازد و در نتیجه زمان بارگذاری صفحه طولانیتر شود.
- خرابی پلاگین: اگر افزونههای دارای منابع سنگین برای عملکرد موثر، حافظه کافی نداشته باشند، ممکن است دچار مشکل شوند.
- صفحه سفید مرگ: اگر یک اسکریپت PHP حافظه خود را تمام کند، ممکن است سایت شما به جای بارگیری صحیح، یک صفحه سفید خالی را نشان دهد.
نحوه مدیریت PHP memory limit
همچنین درک این نکته ضروری است که اگر یک اسکریپت پیکربندی نادرست یا معیوب از حافظه بیش از حد استفاده کند، تعیین حد بسیار بالا میتواند منجر به مشکلات جدی شود. افزایش PHP memory limit میتواند برای اطمینان از عملکرد و پایداری سایت وردپرس، به ویژه در هنگام انجام وظایف با منابع فشرده، حیاتی باشد. اگر با پیامهای خطایی مانند Allowed memory size exhausted مواجه شدید، PHP memory limit شما باید افزایش یابد. این نشان میدهد که محدودیت حافظه فعلی برای اجرای وظایف کافی نیست.
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
این پیغام نشان میدهد که اسکریپت PHP سعی کرده حافظه بیشتری نسبت به 256 مگابایت مجاز (268,435,456 بایت) اختصاص دهد که منجر به خطای memory exhaustion میشود. اسکریپت سعی کرد 20 کیلوبایت اضافی (20480 بایت) اختصاص دهد اما حافظه موجود را تمام کرد.
چگونه میتوان PHP memory limit را افزایش داد؟
مرحله 1. فایل php.ini را تغییر دهید:
- وارد کنترل پنل شوید.
- به File Manager بروید.
- در داخل دایرکتوری root (public_html)، فایل php.ini را پیدا کنید،
- در خطی که memory_limit وجود دارد جستجو کنید.
- memory_limit = 256M
- محدودیت را افزایش دهید و تغییرات را ذخیره کنید.
مرحله 2. فایل htaccess. را ویرایش کنید
- وارد سی پنل خود شوید.
- به File Manager بروید.
- در پوشه public_html، htaccess. را پیدا کنید
- خط زیر را اضافه کنید:
- php_value memory_limit 256M
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
تفاوتهای اصلی PHP Workers با PHP memory limit:
- نقش در رسیدگی به درخواستها
PHP workers درخواستهای دریافتی وب و همزمانی را مدیریت میکنند. PHP memory limit مقدار حافظهای که هر اسکریپت میتواند استفاده نمود را محدود کرده و از تخصیص مناسب منابع اطمینان میدهد.
- تاثیر بر عملکرد
افزایش PHP workers ظرفیت سرور را برای رسیدگی به درخواستهای همزمان بیشتر، بهبود میبخشد. افزایش PHP memory limit به اسکریپتهای فردی اجازه میدهد تا عملیات گستردهتری را بدون خطا انجام دهند. هر دو باید برای عملکرد متعادل بهینه شوند.
- پیکربندی و مدیریت
مدیریت PHP Workers نیاز به پیکربندی تعداد مناسب در تنظیمات سرور شما، مانند PHP-FPM (FastCGI Process Manager) دارد. در مقابل، مدیریت PHP memory limit شامل ویرایش فایل php.ini یا تنظیم آن به صورت پویا در کد است.
سایت شما به چند PHP workers نیاز دارد؟
PHP workers از 80 تا 100 درصد ظرفیت CPU موجود شما استفاده میکنند. برای بارهای کاری پیچیده، ممکن است فقط بتوانید از دو PHP workers قبل از اتمام منابع CPU پشتیبانی کنید. با این حال، با بارهای کاری بهینه و کارآمد، میتوانید 4، 6 یا حتی 8 ورکر (worker) در هر هسته را با مشخصات دقیق سرور مدیریت کنید. وجود تعداد زیادی PHP workers برای CPU موجود همه چیز را کند مینماید، زیرا وظایف در صف قرار میگیرند و CPU زمان بیشتری را صرف جابجایی بین وظایف به جای تکمیل آنها میکند. از سوی دیگر، داشتن تعداد بسیار کمی از PHP workers در هر CPU میتواند منجر به هدر رفتن منابع شود، زیرا ممکن است بخشهایی از CPU به جای پردازش موثر وظایف، بیکار بمانند. تعداد PHP workers مورد نیاز شما بر اساس پیچیدگی سایت، درخواستهای همزمان و ترافیک متفاوت است. به طور کلی، 2 تا 4 کارگر برای یک سایت استاتیک مناسب هستند. برای سایتهای مهمتر و پویاتر مانند فروشگاههای آنلاین یا انجمنهای گفتگو، شروع با چهار PHP workers معمولا یک رویکرد خوب است. با این حال، این تعداد بسته به مضامین منحصر به فرد سایت، افزونهها، کوئریهای دیتابیس و نسبت محتوای کش به ذخیره نشده میتواند متفاوت باشد.
اگر به اندازه کافی PHP workers نداشته باشید، چه اتفاقی میافتد؟
برای عملکرد بهینه وبسایت، اطمینان حاصل کنید که به اندازه کافی PHP workers دارید. وقتی همه آنها مشغول هستند، صف خیلی طولانی میشود. سایت شما در رسیدگی به درخواستهای تصادفی شکست خواهد خورد. بازدیدکنندگان و مدیران ممکن است با صفحات خالی، صفحه سفید مرگ یا خطاهای 500، 502 و 504 مواجه شوند. همچنین میتواند بر مدیریت سایت تاثیر بگذارد، زیرا برای کارهای مدیریتی به PHP workers نیاز است. این مسائل به تجربه کاربر آسیب رسانده و بر سئو تاثیر منفی میگذارد.
بهترین روشها برای مدیریت منابع PHP
مدیریت موثر منابع PHP برای حفظ عملکرد و ثبات سایت وردپرس شما بسیار مهم است.
- نسخه PHP را ارتقا دهید
به طور مرتب به آخرین نسخههای PHP به روز رسانی کنید. نسخههای جدیدتر اغلب با افزایش عملکرد و بهبود امنیت همراه هستند و سایت شما را سریعتر و کارآمدتر میکنند.
- کش (Cache) قوی
پیاده سازی کش قوی میتواند بار کاری را بر روی PHP workers کاهش دهد. با دادن محتوای کش شده به بازدیدکنندگان، درخواستهایی را که PHP workers باید رسیدگی کنند، کاهش میدهید و به آنها اجازه میدهید روی کارهای پیچیدهتر تمرکز کنند.
- بهینه سازی کد و کوئریها
اطمینان حاصل کنید که کد PHP و کوئریهای دیتابیس، بهینه شدهاند. کد کارآمد و تعامل خوب پایگاه داده زمان پردازش را کاهش میدهد و به PHP workers این امکان را میدهد تا درخواستهای بیشتری را سریعتر انجام دهند.
- نظارت بر استفاده از منابع
نظارت شما را قادر میسازد تا مشکلات و کاهش سرعت را در زمان واقعی شناسایی کنید و به شما امکان می دهد به سرعت به آنها رسیدگی کنید.