Պլանավորեք NGINX պրոքսի սոքեթները նախքան worker_connections-ը բարձրացնելը
Պրոքսավորված կապը սովորաբար զբաղեցնում է և՛ հաճախորդի, և՛ upstream-ի սոքեթ; տարբերեք worker-ի կապերի սահմանաչափը ծառայության ֆայլային դեսկրիպտորների սահմանաչափից։
Երկարաժամկետ պրոքսավորված կապը սովորաբար զբաղեցնում է երկու սոքեթ՝ հաճախորդի և upstream-ի։ worker_connections հաշվում է երկու կողմերը։ Ուստի այն worker_processes-ով բազմապատկելը պրոքսի օգտատերերին հզորության խոստում չի տալիս։
Երբ կապերը ձախողվում են, հետևեք հաղորդված սահմանաչափին՝
| Ապացույց | Ստուգման ենթակա կարգավորում կամ պրոցեսի վիճակ |
|---|---|
| worker_connections-ի սպառում | Worker-ի կապերի բյուջեն՝ ներառյալ upstream սոքեթները |
| Օպերացիոն համակարգի «Չափազանց շատ բաց ֆայլեր» հաղորդագրությունը | Ֆայլային դեսկրիպտորների սահմանաչափը, որը ժառանգում է ծառայության փաստացի պրոցեսը |
Լսող սոքեթները, մատյանները և այլ բաց ֆայլերը նույնպես սպառում են դեսկրիպտորներ։ Կապերի վերօգտագործումը և երթևեկության խառնուրդը փոխում են օգտատերերի և սոքեթների հարաբերությունը։
worker_rlimit_nofile կարգավորում է worker-ի սահմանաչափերը՝ միջավայրի թույլտվությունների շրջանակում։ systemd միավորը կարող է սահմանել LimitNOFILE; ինտերակտիվ shell-ի ulimit-ը չի փոխում աշխատող ծառայությունը։
Չափորոշեք սահմանաչափերը ըստ աշխատանքային բեռի և ստուգեք, թե ով է դրանք սպառում։ Անսպասելի հաճախորդները կամ կրկնվող ձախողվող upstream կապերը կարող են սպառել նախկինում բավարար բյուջեն։ Ավելի մեծ պրոցեսների քանակը կամ հիշողության սահմանաչափը չի վերացնում դեսկրիպտորների պակասը։