nginx را می توان با سیگنال ها کنترل کرد. شناسه فرآیند اصلی فرآیند به طور پیش فرض در فایل /usr/local/nginx/logs/nginx. pid نوشته می شود. این نام ممکن است در زمان پیکربندی یا در nginx.conf با استفاده از دستور pid تغییر کند. فرآیند اصلی سیگنال های زیر را پشتیبانی می کند:
| TERM، INT | خاموش شدن سریع |
| ترک | خاموش شدن برازنده |
| HUP | تغییر پیکربندی، هماهنگی با منطقه زمانی تغییر یافته (فقط برای FreeBSD و لینوکس)، شروع فرآیندهای کارگر جدید با پیکربندی جدید، خاموش کردن دلپذیر فرآیندهای کارگر قدیمی |
| USR1 | باز کردن مجدد فایل های گزارش |
| USR2 | ارتقاء یک فایل اجرایی |
| وینچ | تعطیلی برازنده فرآیندهای کارگری |
فرآیندهای کارگر فردی را می توان با سیگنال ها نیز کنترل کرد، اگرچه نیازی به آن نیست. سیگنال های پشتیبانی شده عبارتند از:
| TERM، INT | خاموش شدن سریع |
| ترک | خاموش شدن برازنده |
| USR1 | باز کردن مجدد فایل های گزارش |
| وینچ | خاتمه غیرعادی برای اشکال زدایی (نیاز به فعال شدن debug_points دارد) |
تغییر پیکربندی
برای اینکه nginx فایل پیکربندی را دوباره بخواند، یک سیگنال HUP باید به فرآیند اصلی ارسال شود. فرآیند اصلی ابتدا اعتبار نحو را بررسی می کند، سپس سعی می کند پیکربندی جدید را اعمال کند، یعنی فایل های گزارش و سوکت های شنیداری جدید را باز کند. اگر این کار انجام نشد، تغییرات را برگردانده و با پیکربندی قدیمی به کار خود ادامه می دهد. در صورت موفقیت آمیز بودن، فرآیندهای کارگری جدید را شروع می کند و پیام هایی را به فرآیندهای کارگر قدیمی ارسال می کند و از آن ها درخواست می کند که به خوبی خاموش شوند. فرآیندهای کارگر قدیمی سوکت های گوش را می بندند و به خدمات مشتریان قدیمی ادامه می دهند. پس از سرویس دهی به همه مشتریان، فرآیندهای کارگر قدیمی خاموش می شوند.
بیایید این را با مثال توضیح دهیم. تصور کنید که nginx روی FreeBSD و دستور اجرا می شود
خروجی زیر را تولید می کند:
اگر HUP به فرآیند اصلی ارسال شود، خروجی تبدیل به:
یکی از فرآیندهای کارگر قدیمی با PID 33129 هنوز به کار خود ادامه می دهد. بعد از مدتی خارج می شود:
چرخش فایل های گزارش
برای چرخاندن فایل های گزارش، ابتدا باید نام آنها را تغییر دهید. پس از آن سیگنال USR1 باید به فرآیند اصلی ارسال شود. سپس پروسه اصلی همه فایل های گزارش باز شده را مجدداً باز می کند و یک کاربر غیرمجاز را که پردازش های کارگر تحت آن اجرا می شوند، به عنوان مالک اختصاص می دهد. پس از باز کردن مجدد موفقیت آمیز، فرآیند اصلی همه فایل های باز را می بندد و پیامی را به فرآیند کارگر می فرستد تا از آنها بخواهد فایل ها را دوباره باز کنند. پردازش های Worker نیز فایل های جدید را باز می کنند و فایل های قدیمی را بلافاصله می بندند. در نتیجه، فایل های قدیمی تقریباً بلافاصله برای پردازش پست، مانند فشرده سازی، در دسترس هستند.
به روز رسانی اجرایی در پرواز
به منظور به روزرسانی سرور اجرایی ، پرونده جدید اجرایی باید ابتدا به جای یک پرونده قدیمی قرار گیرد. پس از آن سیگنال USR2 باید به روند کارشناسی ارشد ارسال شود. فرآیند اصلی ابتدا پرونده خود را با شناسه فرآیند به یک پرونده جدید با پسوند . Oldbin ، به عنوان مثال تغییر می دهد./usr/local/nginx/logs/nginx. pid. oldbin ، سپس یک پرونده جدید اجرایی را شروع می کند که به نوبه خود فرآیندهای جدید کارگر را شروع می کند:
پس از آن همه فرآیندهای کارگر (قدیمی و جدید) همچنان درخواست ها را می پذیرند. اگر سیگنال وینچ به اولین فرآیند کارشناسی ارشد ارسال شود ، پیام هایی را به فرآیندهای کارگر خود ارسال می کند و از آنها می خواهد که با لطف خاموش شوند و آنها شروع به خروج می کنند:
پس از مدتی ، فقط فرآیندهای جدید کارگر درخواست ها را پردازش می کنند:
لازم به ذکر است که روند کارشناسی ارشد قدیمی سوکت های گوش خود را بسته نمی کند ، و می توان در صورت لزوم دوباره فرآیندهای کارگر خود را شروع کرد. اگر به دلایلی پرونده جدید اجرایی به طور غیرقابل قبول کار کند ، یکی از موارد زیر را می توان انجام داد:
سیگنال HUP را به روند کارشناسی ارشد قدیمی ارسال کنید. فرآیند قدیمی قدیمی فرآیندهای جدید کارگر را بدون خواندن مجدد پیکربندی آغاز می کند. پس از آن ، با ارسال سیگنال ترک به فرآیند جدید کارشناسی ارشد ، تمام فرآیندهای جدید را می توان با لطف خاموش کرد.
اصطلاح سیگنال را به فرآیند جدید استاد ارسال کنید. سپس پیامی را به فرآیندهای کارگر خود ارسال می کند که از آنها درخواست می کند فوراً از آنها خارج شوند و همه آنها تقریباً بلافاصله از آن خارج می شوند.(اگر فرآیندهای جدید به دلایلی از آن خارج نشوند ، باید سیگنال کشتن به آنها ارسال شود تا آنها را مجبور به خروج کنند.) وقتی فرآیند جدید استاد خارج شود ، روند کارشناسی ارشد قدیمی فرآیندهای جدید کارگران را به طور خودکار شروع می کند.
اگر فرآیند جدید اصلی خارج شود ، فرآیند قدیمی قدیمی پسوند . oldbin را از نام پرونده با شناسه فرآیند دور می کند.
اگر به روزرسانی موفقیت آمیز باشد ، باید سیگنال ترک به فرآیند قدیمی قدیمی ارسال شود و فقط فرآیندهای جدید باقی می مانند:
استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید
برچسب :
نویسنده : مرجان شیرمحمدی
بازدید : 38
تاريخ : چهارشنبه
31 خرداد
1402 ساعت: 19:05