లైనక్స్uలో ఎక్కువ ర్యామ్uను తినకుండా PHP-FPM ని ఎలా నిరోధించాలి


మీరు LEMP (Linux, NGINX, MySQL/MariaDB, మరియు PHP) స్టాక్uను అమర్చినట్లయితే, మీరు బహుశా PHP ప్రాసెసింగ్ కోసం NGINX (HTTP సర్వర్uగా) లో ఫాస్ట్uసిజిఐ ప్రాక్సీయింగ్uను ఉపయోగిస్తున్నారు. PHP-FPM (ఫాస్ట్uసిజిఐ ప్రాసెస్ మేనేజర్ యొక్క ఎక్రోనిం) విస్తృతంగా ఉపయోగించబడే మరియు అధిక-పనితీరు గల ప్రత్యామ్నాయ PHP ఫాస్ట్uసిజిఐ అమలు.

Linux లో LEMP స్టాక్uను సెటప్ చేయడానికి ఉపయోగకరమైన మార్గదర్శకాలు ఇక్కడ ఉన్నాయి.

  • ఉబుంటు 20.04 లో PhpMyAdmin తో LEMP స్టాక్uను ఎలా ఇన్uస్టాల్ చేయాలి
  • సెంటొస్ 8 లో LEMP సర్వర్uను ఎలా ఇన్uస్టాల్ చేయాలి
  • డెబియన్ 10 సర్వర్uలో LEMP ని ఎలా ఇన్uస్టాల్ చేయాలి

ఇటీవల, మా LEMP వెబ్ సర్వర్uలలోని అన్ని PHP వెబ్uసైట్లు నెమ్మదిగా మారాయి మరియు చివరికి సర్వర్uలోకి లాగిన్ అవ్వడంపై స్పందించడం మానేసింది. సిస్టమ్ RAM లో తక్కువగా నడుస్తుందని మేము కనుగొన్నాము: కింది స్క్రీన్ షాట్ (చూపులు - సిస్టమ్ పర్యవేక్షణ సాధనం) లో సూచించినట్లుగా, PHP-FPM చాలా RAM ను వినియోగించింది.

$ glances

ఈ వ్యాసంలో, లైనక్స్uలో PHP-FPM ని ఎక్కువగా తినకుండా లేదా మీ సిస్టమ్ మెమరీ (RAM) ను ఎలా నిరోధించాలో చూపిస్తాము. ఈ గైడ్ చివరిలో, మీరు PHP-FPM మెమరీ వినియోగాన్ని 50% లేదా అంతకంటే ఎక్కువ ఎలా తగ్గించాలో నేర్చుకుంటారు.

PHP-FPM మెమరీ వినియోగాన్ని తగ్గించండి

ఇంటర్నెట్uలో కొంత పరిశోధన చేసిన తరువాత, పూల్ కాన్ఫిగరేషన్ ఫైల్uలో PHP-FPM యొక్క మెమరీ వినియోగాన్ని తగ్గించడానికి మేము PHP-FPM ప్రాసెస్ మేనేజర్uను మరియు దానిలోని కొన్ని అంశాలను పునర్నిర్మించాల్సిన అవసరం ఉందని మేము కనుగొన్నాము.

డిఫాల్ట్ పూల్ www మరియు దాని కాన్ఫిగరేషన్ ఫైల్ /etc/php-fpm.d/www.conf (CentOS/RHEL/Fedora లో) లేదా /etc/php/7.4/fpm/pool.d/www.conf ( ఉబుంటు/డెబియన్/పుదీనాపై).

$ sudo vim /etc/php-fpm.d/www.conf             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

కింది ఆదేశాలను కనుగొని, మీ ఉపయోగం సందర్భానికి అనుగుణంగా వాటి విలువను సెట్ చేయండి. వ్యాఖ్యానించబడిన ఆదేశాల కోసం, మీరు వాటిని విడదీయాలి.

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

పై ఆదేశాలు మరియు వాటి విలువలను క్లుప్తంగా వివరిద్దాం. ప్రాసెస్ మేనేజర్ పిల్లల ప్రక్రియల సంఖ్యను ఎలా నియంత్రిస్తుందో pm డైరెక్టివ్ నిర్ణయిస్తుంది. డిఫాల్ట్ పద్ధతి డైనమిక్, అనగా pm.max_children తో సహా కొన్ని ఇతర ఆదేశాలను బట్టి పిల్లల సంఖ్య (పిల్లల ప్రక్రియలు) డైనమిక్uగా సెట్ చేయబడతాయి, ఇది ఒకే సమయంలో సజీవంగా ఉండగల పిల్లల సంఖ్యను నిర్వచిస్తుంది.

ప్రారంభంలో పిల్లల ప్రక్రియలు ఏవీ సృష్టించబడవు, కానీ డిమాండ్ మీద పుట్టుకొచ్చే ఆన్uడిమాండ్ పథకం చాలా ఆదర్శవంతమైన ప్రాసెస్ మేనేజర్. కొత్త ప్రక్రియలు pm.max_children మరియు pm.process_idle_timeout ఆధారంగా కనెక్ట్ అయినప్పుడు మాత్రమే పిల్లల ప్రక్రియలు ఫోర్క్ చేయబడతాయి, ఇది నిష్క్రియ ప్రక్రియ చంపబడే సెకన్ల సంఖ్యను నిర్వచిస్తుంది.

చివరిది కాని, మనం తిరిగి పుట్టుకొచ్చే ముందు ప్రతి పిల్లల ప్రక్రియ అమలు చేయవలసిన అభ్యర్థనల సంఖ్యను నిర్వచించే pm.max_requests పారామితిని సెట్ చేయాలి. ఈ పరామితిని 3 వ పార్టీ లైబ్రరీలలో మెమరీ లీక్uల కోసం ఒక పరిష్కారంగా కూడా ఉపయోగించవచ్చని గమనించండి.

రిఫరెన్స్: PHP-FPM ను అమలు చేయడానికి మంచి మార్గం.

పైన పేర్కొన్న ఈ కాన్ఫిగరేషన్లను చేసిన తరువాత, మా సర్వర్uలో RAM వినియోగం ఇప్పుడు బాగానే ఉందని నేను గమనించాను. ఈ అంశానికి లేదా ప్రశ్నలకు సంబంధించిన భాగస్వామ్యం చేయడానికి మీకు ఏమైనా ఆలోచనలు ఉన్నాయా? దిగువ ఫీడ్uబ్యాక్ ఫారం ద్వారా మమ్మల్ని చేరుకోండి.