پیش از افزایش worker_connections، سوکتهای پروکسی NGINX را بودجهبندی کنید
یک اتصال پروکسی معمولاً هم سوکت کلاینت و هم سوکت بالادست را اشغال میکند؛ محدودیت اتصال worker را از محدودیت توصیفگر فایل سرویس جدا کنید.
یک اتصال پروکسی طولانیمدت معمولاً دو سوکت را اشغال میکند: سوکت کلاینت و سوکت بالادست. worker_connections هر دو طرف را میشمارد. بنابراین ضرب آن در worker_processes هیچ وعدهای درباره ظرفیت کاربران پروکسی نمیدهد.
وقتی اتصالها شکست میخورند، از محدودیت گزارششده پیروی کنید:
| شواهد | تنظیم یا وضعیت فرآیندی که باید بررسی شود |
|---|---|
| تمام شدن worker_connections | بودجه اتصال worker، شامل سوکتهای بالادست |
| پیام سیستمعامل «فایلهای باز بیش از حد» | محدودیت توصیفگر فایلی که فرآیند واقعی سرویس به ارث میبرد |
سوکتهای شنود، گزارشها و دیگر فایلهای باز نیز توصیفگر مصرف میکنند. استفاده مجدد از اتصال و ترکیب ترافیک رابطه میان کاربران و سوکتها را تغییر میدهد.
worker_rlimit_nofile محدودیتهای worker را با توجه به مجوزهای محیط تنظیم میکند. یک واحد systemd میتواند LimitNOFILE را تعیین کند؛ ulimit در یک شل تعاملی سرویس در حال اجرا را تغییر نمیدهد.
محدودیتها را متناسب با بار کاری اندازه بگیرید و بررسی کنید چه کسی آنها را مصرف میکند. کلاینتهای غیرمنتظره یا اتصالهای بالادستی که مکرر شکست میخورند میتوانند بودجهای را که پیشتر کافی بود تمام کنند. تعداد بیشتر فرآیند یا محدودیت حافظه بالاتر کمبود توصیفگر را جبران نمیکند.