WireGuard హ్యాండ్షేక్ ఇప్పటికీ పూర్తవుతుంది, peer ఇప్పటికీ ఇటీవలి endpoint చూపిస్తుంది, అయినా దాని వెనుక ఉన్న రిలే ద్వారా కొత్త SSH సెషన్ ఎలాంటి బ్యానర్ లేకుండా వేలాడుతోంది. ఆ కలయిక టన్నెల్ నుండి దూరంగా, socketని స్వీకరించే ప్రక్రియ వైపు సూచిస్తుంది. socat లాంటి రిలే తన సొంత డిస్క్రిప్టర్ బడ్జెట్, తన సొంత పిల్లలు, తన సొంత వారసత్వ పరిమితులతో అప్లికేషన్ మార్గంలో కూర్చుంది. క్రింది నడక క్లయింట్ నుండి ప్రారంభమై మరో socket తెరవలేని మొదటి భాగంలో ఆగుతుంది.

సంఖ్యను మార్చే ముందు మార్గాన్ని అనుసరించండి

మొత్తం టన్నెల్ గురించి ఆలోచించడం కంటే ఒక విఫలమైన అభ్యర్థనను అనుసరించండి. క్లయింట్ టన్నెల్లో రాస్తుంది, VPN డీమన్ డీక్రిప్ట్ చేసి మార్గనిర్దేశం చేస్తుంది, రిలే మరో వైపు స్వీకరిస్తుంది. ప్రతి అడుగు డిస్క్రిప్టర్లను వినియోగిస్తుంది, సాధారణంగా ఖాళీ అయ్యేది చివరిది.

మీరు పునరుత్పత్తి చేయగల అభ్యర్థనతో ప్రారంభించి దాని సమయాన్ని కొలవండి. TCP హ్యాండ్షేక్ పూర్తయినా అప్లికేషన్ బ్యానర్ రాకపోతే, రిలే socketని తీసుకుని తర్వాత పిల్లలో లేదా దాని పైకి కాలులో చిక్కుకుంది. హ్యాండ్షేక్ స్వయంగా ఎప్పుడూ పూర్తికాకపోతే, కారణం మార్గనిర్దేశం, ఫైర్వాల్ లేదా వినేవారి స్థితి, డిస్క్రిప్టర్ పైకప్పు కాదు. రెండు ఆకారాల్లో ఏది చూశారో నమోదు చేయండి, ఎందుకంటే అవి వేర్వేరు ప్రక్రియలను సూచిస్తాయి.

పనిని నకిలీ చేసే దూకుళ్లను కూడా లెక్కించండి. చీలిక వినేవారు స్వీకరించిన ప్రతి socketని తన సొంత కాపీ ఉంచుకునే పిల్లకు అప్పగిస్తుంది, కాబట్టి నిజమైన మొత్తం మొత్తం చెట్టు లక్షణం, తల్లిదండ్రులది మాత్రమే కాదు.

రిలే వారసత్వంగా పొందిన పరిమితిని చదవండి

ముఖ్యమైన ఏకైక పరిమితి నడుస్తున్న ప్రక్రియది, దాన్ని ఆ ప్రక్రియను ప్రారంభించినది నిర్ణయించింది. షెల్లో ulimit -n టైప్ చేయడం షెల్ను వివరిస్తుంది. సేవా నిర్వాహకుడిని ఏమి వర్తింపజేశారని అడిగి, తర్వాత PIDలో నిర్ధారించండి.

systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits

limits ఫైల్ మృదువైన మరియు కఠినమైన పైకప్పులను ప్రక్రియ చూసే విధంగా ముద్రిస్తుంది. ఉదారమైన కఠిన విలువ కింద తక్కువ మృదు విలువ అంటే డీమన్కు తన పైకప్పును పెంచుకునే అనుమతి ఉంది, కొన్ని ప్రారంభంలో అలా చేస్తాయి; సమాన తక్కువ విలువలు అంటే unit ఫైలే మూలం.

Drop-in ఫైళ్లు నిఘంటువు క్రమంలో లోడ్ అవుతాయి, తర్వాతి ఫైళ్లు గెలుస్తాయి, కాబట్టి systemctl cat vpn-relay.service ఏది వర్తిస్తుందో దానిపై అధికారిక దృశ్యం. నిర్వాహకుడు ఎప్పుడూ చదవని ఫైల్ను సవరించడమే పెంచిన సంఖ్యకు ఎలాంటి ప్రభావం లేకపోవడానికి సాధారణ కారణం.

స్థిరమైన సమకాలీనతను నిలిపివేసిన స్థితి నుండి వేరు చేయండి

రెండు ప్రక్రియలు సంబంధం లేని కారణాలతో ఒకే పైకప్పును చేరుకోవచ్చు, పరిష్కారాలు భిన్నంగా ఉంటాయి. ఉపయోగకరమైన సమకాలీన సెషన్లను అనుసరించే డిమాండ్ సామర్థ్య ప్రశ్న. పని ముగిసిన తర్వాత కూడా కొనసాగే పెరుగుదల లీక్ లేదా ఎవరూ మూయని సెషన్ల సముదాయం.

నిష్క్రియ స్థితిలో, మీ సాధారణ శిఖరం వద్ద, లోడ్ ఆగిన కొన్ని నిమిషాల తర్వాత మళ్లీ కొలవండి. ls /proc/PID/fd | wc -l తో తెరిచిన నమోదులను మృదు పరిమితికి వ్యతిరేకంగా లెక్కించడం అంతరాన్ని చెబుతుంది, పైకప్పు కంటే ఒకటి లేదా రెండు తక్కువ లెక్క నెమ్మది మార్గం కాదు, కఠిన ఆగుడు.

లెక్క తగ్గడానికి నిరాకరిస్తే, మొత్తాలకు బదులు socket స్థితులను చూడండి. CLOSE_WAIT లో కూర్చున్న డిస్క్రిప్టర్లు peer మూసివేసింది, మీ వైపు ఎప్పుడూ మూయలేదు అని అర్థం, ఇది అప్లికేషన్ జీవితచక్ర లోపం, పెద్ద పరిమితి దాన్ని వాయిదా వేస్తుంది మాత్రమే. పిల్లల నమూనాను కూడా పరిమితం చేయండి: సమకాలీన పిల్లలపై పరిమితి లేని చీలిక రిలే డిస్క్రిప్టర్లు, ప్రక్రియ స్లాట్లు, మెమరీని కలిసి ఖాళీ చేస్తుంది.

ప్రత్యక్ష ప్రక్రియలో కొత్త విలువను తనిఖీ చేయండి

unit సవరించిన తర్వాత నిర్వాహకుడిని మళ్లీ లోడ్ చేసి సేవను పునఃప్రారంభించండి, ఎందుకంటే మళ్లీ లోడ్ చేయడం మాత్రమే నడుస్తున్న ప్రక్రియ ఇప్పటికే వారసత్వంగా పొందిన పరిమితులను ఎప్పుడూ భర్తీ చేయదు. నిజంగా ట్రాఫిక్ అందిస్తున్న ప్రక్రియలో ధృవీకరించండి.

systemctl daemon-reload
systemctl restart vpn-relay.service
awk '/Max open files/ {print}' /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
ss -tnp state established '( sport = :2222 )' | wc -l

awk పంక్తి కొత్త జతను తిరిగి ఇస్తుంది; ఇంకా పాతది చూపిస్తే, మీరు సవరించిన drop-in లోడ్ అవుతున్నది కాదు. ss లెక్క మీ పనిభార తనిఖీ, కాబట్టి ఆశించిన సెషన్ల సంఖ్యను తెరిచి అది పెరగడం చూడండి. ఆ సెషన్లు మూసిన తర్వాత కూడా పెరుగుతూనే ఉంటే పరిమితి ఎప్పుడూ మొత్తం సమస్య కాదు.

ఏ పెద్ద పెంపుతోనైనా ఒక హెచ్చరిక ఉంటుంది. select() తో పోల్ చేసే అప్లికేషన్లు FD_SETSIZE పైన డిస్క్రిప్టర్లను గమనించలేవు, ఇది సాధారణ బిల్డ్లలో 1024, కాబట్టి దాని పైన పెంచిన పైకప్పు సంబంధం లేనట్టు కనిపించే వైఫల్యాలను ఉత్పత్తి చేయవచ్చు. systemd అమలు సూచన తాను ప్రారంభించే సేవలకు అదే హెచ్చరికను కలిగి ఉంది.

పునఃప్రారంభాన్ని టన్నెల్ లభ్యత నుండి దూరంగా ఉంచండి

రిలేను పునఃప్రారంభించడం దాని క్రియాశీల సెషన్లను పడేస్తుంది, అది VPN కిందకి పడటం నుండి వేరైన సంఘటన. రిలే చక్రం తిరుగుతున్నప్పుడు టన్నెల్ పైన ఉండేలా మార్పును క్రమబద్ధం చేయండి, దాన్ని దాటే దీర్ఘకాలిక సెషన్ ఉన్నవారిని హెచ్చరించండి.

రోల్బ్యాక్ అంటే మునుపటి unit ఫైల్ మరియు మరో పునఃప్రారంభం, కొత్త విలువ ఒక పని దినాన్ని దాటే వరకు ఆ ఫైల్ తన స్థానంలో ఉంటుంది. తర్వాత మొదట విఫలమైన అభ్యర్థనతో లూప్ను మూయండి: రిలే ద్వారా కొత్త SSH సెషన్, అర్థవంతం కావడానికి తగినంత పొడవైన బదిలీ, మరియు నిష్క్రియ స్థాయికి తిరిగి వచ్చే డిస్క్రిప్టర్ లెక్క.

సంబంధిత వ్యాసాలు