هنر بهینه سازی منابع: درس هایی از عملیات رستوران برای بهره وری سرور

تصور کنید می خواهید یک رستوران جدید و جذاب در قلب شهر افتتاح کنید. با ایده های منحصر به فرد منو، پیشینه قوی در هنر آشپزی، و بازار رستوران پر رونق، شما هیجان زده هستید که محصول جدید خود را به بازار معرفی کنید.
جهان اما با وجود هیجان، ملاحظات مهمی وجود دارد که باید در نظر بگیرید.
از یک طرف، شما می خواهید بهترین و سریع ترین خدمات ممکن را ارائه دهید. مشتریانی که احساس می کنند خدمات شما کند است
و ناکارآمد برای رفتن به یک رستوران رقیب انتخاب می کند.
بنابراین، فکر اولیه شما این خواهد بود که تا حد امکان پیشخدمت و سرآشپز داشته باشید. شاید حتی یک گارسون و یکی
آشپز در هر میز به این ترتیب می توانید سریع ترین خدمات را تضمین کنید.
از طرفی منابع محدودی دارید. پیشخدمت ها و سرآشپزها به حقوق، پول و اگر می خواهید بسازید
سود، شما باید هزینه های نیروی کار را به حداقل برسانید.
پس شاید فقط یک آشپز و یک پیشخدمت؟ هنگامی که حجم بالایی از خدمات شما وجود دارد، این امر بر خدمات شما تأثیر منفی می گذارد
مشتریان یک پیشخدمت و یک سرآشپز برای تحمل بار مشکل دارند و خدمات بسیار کند خواهد بود.
گزینه دیگر این است که بر اساس تقاضا برای گارسون ها زمان بندی کنید. فقط زمانی که مشتریان رسیدند با پیشخدمت تماس بگیرید. با این حال، این نیز است
راه حل خوبی نیست زیرا زمان می برد تا گارسون بیاید و شروع به ارائه خدمات کند که این امر منفی خواهد بود
خدمات مشتری را تحت تاثیر قرار دهد.
راه حل، مدیریت عاقلانه است. تعداد کمی از پیشخدمتها را که از افتتاحیه بهطور مداوم حضور دارند، تعریف کنید
رستوران حداکثر تعداد پیشخدمت های موجود در زمان اوج تقاضا را تنظیم کنید.
وقتی پیشخدمتی در دسترس نباشد، دلیلی وجود ندارد که در صورت عدم تقاضا فوراً آنجا را ترک کنند. از این رو،
زمانی را برای مدت زمانی که پیشخدمت پس از پایان خدمت در آنجا بماند، تعیین کنید.
سرور مانند رستوران است که خدمات اصلی را ارائه می دهد. در هر سرور، تعداد محدودی منابع دارید،
مانند رم. همانطور که در یک رستوران، شما نقش های مختلفی مانند پیشخدمت و سرآشپز دارید، در یک سرور نیز تعدادی
فرآیندهای در حال اجرا در پس زمینه، مانند سرور LEMP:
در آن راهنما، ما بر روی PHP-FPM تمرکز خواهیم کرد. با این حال، ما می توانیم این را برای سایر خدمات نیز اعمال کنیم.
ابتدا، بیایید با درک میزان استفاده از منابع خود شروع کنیم.
با استفاده از دستور زیر می توانید این کار را انجام دهید:
free -h
را free
فرمان اطلاعات مربوط به استفاده از حافظه (RAM) را در رایانه شما به صورت خوانا و قابل فهم نمایش می دهد
قالب
اطلاعات نمایش داده شده توسط دستور شامل:
- جمع: مقدار کل حافظه کامپیوتر شما.
- استفاده شده: مقدار حافظه ای که در حال حاضر توسط فرآیندها و برنامه های رایانه شما استفاده می شود.
- رایگان: مقدار حافظه ای که استفاده نمی شود و برای استفاده فوری توسط فرآیندها یا برنامه های اضافی در دسترس است.
- در دسترس: مقدار حافظه موجود برای استفاده بیشتر این شامل حافظه ای است که در حال حاضر استفاده نمی شود و می تواند بلافاصله توسط فرآیندها یا برنامه های اضافی مورد استفاده قرار گیرد.
- بافر/کش: مقدار حافظه ای که سیستم برای ذخیره موقت داده ها یا کش کردن اطلاعات استفاده می کند. این داده ها به بهبود عملکرد سیستم کمک می کند.
حال، بیایید «هزینه» حافظه هر پیشخدمت یا در این مورد، هر فرآیند PHP-FPM را تعیین کنیم.
می توانید استفاده کنید ps
دستور برای پیدا کردن و مرتبسازی فرآیندهای فعال PHP-FPM بر اساس اندازه مجموعه مقیم (RSS) که عبارت است از
مقدار حافظه فیزیکی (RAM) مورد استفاده در فرآیند.
دستور زیر را اجرا خواهیم کرد:
ps -ylC php-fpm --sort:rss
این دستور لیستی از فرآیندهای php-fpm را نمایش می دهد و آنها را بر اساس اندازه حافظه فیزیکی آنها از کوچکترین به مرتب می کند.
بزرگترین.
- “ps”: خود فرمان برای نمایش لیستی از فرآیندها.
- “-y”: فرآیندها را در قالب “جدول” با ستون های اضافی نمایش می دهد.
- “-l”: اطلاعات دقیق در مورد فرآیندها، از جمله فرآیند اصلی هر فرآیند را نشان می دهد.
- “-C php-fpm”: فرآیندها را فقط برای فرآیندی با نام “php-fpm” نمایش می دهد.
- “–sort:rss”: فرآیندها را بر اساس اندازه حافظه فیزیکی آنها (RSS، Resident Set Size) از کوچکترین به بزرگترین مرتب می کند.
برای محاسبه میانگین از دستور awk استفاده می کنیم و دستور زیر را اجرا می کنیم:
ps --no-headers -o "rss,cmd" -C php-fpm7.0 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
اکنون که اطلاعاتی در مورد منابع خود و میانگین هزینه هر فرآیند داریم،
ما می توانیم تعداد فرآیندهایی را که می خواهیم اجرا کنیم تعیین کنیم.
بسته به نسخه PHP تنظیمات را می توان در فایل /etc/php/X.0/fpm/pool.d/www.conf پیدا کرد.
pm.max_children = 17
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
حداکثر_کودکان
ابتدا، با محاسبه بخشی از میانگین منابع مورد نیاز، حداکثر تعداد سرورهایی را که می توانیم مدیریت کنیم، تعریف می کنیم.
توسط هر فرآیند
به عنوان مثال: 2560 Mb / 60 Mb = 42 حداکثر_کودکان
start_servers
هنگامی که ما حداکثر تعداد را می دانیم، نمی خواهیم همیشه از آنها استفاده کنیم زیرا باعث بارگیری بیش از حد سرور می شود.
بنابراین، هنگام باز شدن رستوران با ویرایش مقدار، حداقل تعداد سرور را تعیین می کنیم start_servers.
min_spare_servers & max_spare_servers
بعد از اینکه مشتریان شروع به ورود کردند و سرورها مشغول شدند،
ما می خواهیم حداقل تعداد سرورهای موجود را تنظیم کنیم تا مشتریان مجبور نباشند منتظر فراخوانی سرور باشند
سازماندهی شده است.
ما با ویرایش مقدار پارامتر به این امر دست پیدا می کنیم min_spare_servers.
به عبارت دیگر اگر تنظیم کنیم start_servers به 5 و min_spare_servers به 3، هنگامی که بار سرور افزایش می یابد، 5
فرآیندها به طور خودکار اجرا می شوند.
هنگامی که 3 نفر از آنها شروع به ارائه خدمات کنند، مدیر فرآیند (pm) یک سرور اضافی را برای اطمینان از در دسترس بودن راه اندازی می کند.
اگر بار بیش از حد شود و بسیاری از سرورها از قبل در حال اجرا هستند، ما نمی خواهیم آنها را به سرعت به خانه ارسال کنیم.
در عوض در رستوران خواهند ماند. با این حال، از آنجایی که در حال حاضر هیچ باری وجود ندارد،
ما حداکثر محدودیتی را برای تعداد قطعات یدکی با استفاده از max_spare_servers رشته.
به طور خلاصه، در دنیای رستوران و همچنین در دنیای سرور،
تخصیص مناسب منابع و فرآیندها کلید عملیات روان و کارآمد است. با تنظیمات دقیق و
با استفاده هوشمندانه از ابزارهای تکنولوژیکی، می توانیم اطمینان حاصل کنیم که رستوران شما (سرور میزبان) تأثیر مثبتی بر مشتریان (کاربران) دارد.
و نیازهای آنها را به صورت حرفه ای و کارآمد برآورده می کند.
.