LimitNPROC kontra TasksMax: x'jgħodd unità OpenVPN
LimitNPROC jgħodd il-proċessi ta' utent wieħed fis-sistema kollha; TasksMax jillimita l-cgroup ta' unità waħda. Aqra l-valuri effettivi qabel tgħolli xi waħda minnhom.
Tluq fallut ta' OpenVPN spiss jiġi bħala lanjanza dwar ir-riżorsi flimkien ma' suġġeriment tajjeb li tgħolli xi limitu, u s-suġġeriment jaħdem biss f'madwar nofs il-każijiet. Wara dawk il-fallimenti hemm żewġ kontaturi mhux marbuta. Wieħed huwa limitu tal-kernel fuq l-għadd ta' kompiti li jkunu proprjetà ta' ID tal-utent reali, u jiġi wirt meta jiġi eżegwit il-proċess. L-ieħor huwa baġit tal-cgroup li l-maniġer tas-servizzi japplika għal unità u għal kollox li din tifforka. Li taqra l-valur effettiv ta' kull wieħed, għall-unità li tassew taħdem, tiswa inqas minn ipoteżi.
Żewġ kontaturi, żewġ mistoqsijiet
LimitNPROC huwa RLIMIT_NPROC taħt isem ta' systemd, u l-unità tal-kontabbiltà tiegħu hija l-ID tal-utent reali. Kull proċess li dan l-utent jippossjedi jgħodd fl-istess total, inkluż xogħol li bdew unitajiet oħra, sessjoni ta' dħul jew kompitu tal-iskedar. Għalhekk dan il-limitu mhuwiex limitu għal kull servizz anki meta jiġi stabbilit ġewwa unità tas-servizz, u servizz li jifforka assistent għal kull klijent jikkompeti ma' kollox ieħor li jaħdem taħt dak il-kont. Kompitu cron impenjat taħt l-istess utent jista' jimbotta unità VPN lil hinn minn linja li qatt ma qasmet waħedha.
TasksMax għandu sid ieħor: il-kontrollur pids fuq il-cgroup tal-unità, li jgħodd kompiti minflok proċessi. Il-ħjut huma kompiti, għalhekk daemon li jidher b'ħajta waħda iżda għandu grupp ta' ħaddiema jista' jikkonsma baġit li fl-ewwel daqqa t'għajn jidher ħafna akbar mill-għadd ta' proċessi tiegħu. EffectiveTasksMax jirrapporta x'fir-realtà jippermetti l-ġerarkija tal-cgroup wara li s-slicers ġenituri jkunu qalu tagħhom.
Għalfejn l-eċċezzjoni root tbiddel it-tweġiba
Il-kernel ma japplikax RLIMIT_NPROC għal proċess li jġorr CAP_SYS_RESOURCE jew CAP_SYS_ADMIN, u għalhekk unità li taħdem bħala root mingħajr ma tirrinunzja għall-privileġġi hija fil-prattika bla limitu skont dik is-setting. Din l-eċċezzjoni waħda tispjega l-pariri kontradittorji li n-nies jiskambjaw: tgħolli LimitNPROC isewwi installazzjoni li rrinunzjat għall-privileġġi u ma tagħmel xejn għal waħda li baqgħet privileġġata. Iċċekkja User= u jekk id-daemon jibdilx identità wara t-tluq qabel ma tagħti ħajr jew tort lil dik is-setting. Unità privileġġata li wara tgħaddi għal kont bla privileġġi jerġa' jaqa' taħt il-limitu fil-mument tal-qalba, u dan iġiegħel il-kronoloġija tal-falliment ukoll jistħoqqilha qari.
Il-fażi tal-falliment iżżommha eqreb. Rifjut matul it-tħejjija tal-eżekuzzjoni, żball ta' forking irrappurtat mid-daemon innifsu u ħolqien ta' kompitu miċħud ġewwa cgroup jipproduċu linji tal-journal differenti, u waħda biss minnhom tingħata tweġiba permezz ta' baġit akbar.
Aqra l-valuri effettivi, mhux dawk tal-qoxra
ulimit -u ta' qoxra interattiva jiddeskrivi dik il-qoxra. Ma jiddeskrivix x'għadda l-maniġer tas-servizzi lid-daemon, u ma jgħid xejn dwar il-kontabbiltà tal-cgroup. Staqsi lill-unità minflok, billi tuża l-isem tal-istanza li jeżisti fuq il-host u mhux eżempju minn gwida.
systemctl show [email protected] -p User -p LimitNPROC -p TasksCurrent -p TasksMax -p EffectiveTasksMax
cat /proc/$(systemctl show -p MainPID --value [email protected])/limits | grep -i processes
Ġewwa kontenitur it-tweġiba teħtieġ żewġ qari oħra, għax valur intern ta' infinity jiddeskrivi biss il-veduta tal-mistieden. Staqsi lis-sid tal-host għal-limitu pids tal-kontenitur innifsu, u kkonferma jekk il-maniġer tas-servizzi intern jistax jiddelega dak il-kontrollur xejn xejn. Unità mnestja ma tistax iżżomm baġit li l-cgroup ġenitur tagħha qatt ma ta.
Kejjel id-daqs tat-tiswija u ppruvaha taħt tagħbija
Agħżel numru mix-xogħol u mhux mit-test tal-iżball. Għodd il-proċessi li d-daemon jibda għal kull klijent imqabbad jew għal kull sejħa ta' assistent, immoltiplika bil-konkorrenza li l-installazzjoni għandha tiflaħ, żid marġni għas-sessjonijiet amministrattivi, u mbagħad qabbel dak in-numru maż-żewġ valuri effettivi. Sositta drop-in lokali żżomm il-bidla reviżabbli u tgħix wara l-aġġornamenti tal-pakketti, filwaqt li li teditja fajl ta' unità mibgħut jaħbi l-modifika sakemm l-aġġornament li jmiss jissostitwih. Ikteb l-aritmetika ħdejn is-sostituzzjoni, għax il-persuna li jmiss li tgħolliha jew tniżżilha teħtieġ is-suppożizzjonijiet, mhux in-numru finali.
Bidliet fil-baġit jiġu applikati waqt l-eżekuzzjoni, għalhekk sempliċi riload ma jbiddilx id-daqs ta' proċessi li diġà għaddejjin. Erġa' ibda l-unità biċ-ċiklu tal-ħajja normali tagħha, aċċetta t-tfixkil tas-sessjoni, u aqra l-kontaturi mill-ġdid fuq l-istanza l-ġdida.
sudo systemctl daemon-reload
sudo systemctl restart [email protected]
systemctl show [email protected] -p TasksCurrent -p EffectiveTasksMax
sudo journalctl -u [email protected] -b --no-pager | tail -n 20
Dak li jipprova t-tiswija huwa unità mibdija mill-ġdid li l-għadd ta' kompiti tagħha joqgħod taħt iż-żewġ limiti waqt li ġġorr it-tagħbija maħsuba, flimkien ma' journal li m'għadux jirrapporta eżawriment ta' kompiti jew forking fl-istess stadju. Żomm in-numri qabel u wara mal-bidla sabiex l-investigazzjoni li jmiss tibda minn kejl u mhux mill-istess parir. Jekk l-għadd għadu jilħaq il-limitu, l-aritmetika kienet ħażina u mhux il-limitu aċċidentalment żgħir wisq, u dik id-differenza tajjeb li tkun taf qabel it-tnedija mill-ġdid li jmiss.