ఈ కథనం యొక్క సవరించని సంస్కరణ మొదట ప్రచురించబడింది
త్రోపుట్ని పెంచడానికి, జాప్యాన్ని తగ్గించడానికి మరియు CPU మరియు మెమరీని మరింత స్థిరంగా ఉపయోగించడానికి PHP-FPMని ఎలా కాన్ఫిగర్ చేయాలో నేను మీకు క్లుప్తంగా చెబుతాను. డిఫాల్ట్గా, PHP-FPMలో PM (ప్రాసెస్ మేనేజర్) లైన్ డైనమిక్, మరియు మీకు తగినంత మెమరీ లేకపోతే, ఇన్స్టాల్ చేయడం మంచిది కోరిక మేరకు. php.net డాక్యుమెంటేషన్ ఆధారంగా 2 నియంత్రణ ఎంపికలను సరిపోల్చండి మరియు నా ఇష్టమైన వాటి నుండి ఎలా భిన్నంగా ఉందో చూద్దాం స్టాటిక్ అధిక వాల్యూమ్ ట్రాఫిక్ కోసం pm:
pm = డైనమిక్ - చైల్డ్ ప్రాసెస్ల సంఖ్య క్రింది ఆదేశాల ఆధారంగా డైనమిక్గా కాన్ఫిగర్ చేయబడింది: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = ఒండెమాండ్ - ప్రక్రియలు డిమాండ్పై సృష్టించబడతాయి (డైనమిక్ క్రియేషన్కు విరుద్ధంగా, సేవ ప్రారంభమైనప్పుడు pm.start_servers ప్రారంభించబడినప్పుడు).
pm = స్థిరమైన - పిల్లల ప్రక్రియల సంఖ్య స్థిరంగా ఉంటుంది మరియు పరామితి ద్వారా సూచించబడుతుంది pm.గరిష్టంగా_పిల్లలు.
వివరాల కోసం, చూడండి
PHP-FPM ప్రాసెస్ మేనేజర్ మరియు CPU ఫ్రీక్వెన్సీ కంట్రోలర్ మధ్య సారూప్యతలు
ఇది ఆఫ్టాపిక్గా అనిపించవచ్చు, కానీ నేను దీన్ని PHP-FPM కాన్ఫిగరేషన్ అంశానికి లింక్ చేయబోతున్నాను. ల్యాప్టాప్, వర్చువల్ మెషీన్ లేదా డెడికేటెడ్ సర్వర్లో కనీసం ఒక్కసారైనా ప్రాసెసర్ మందగమనాన్ని ఎవరు అనుభవించలేదు? CPU ఫ్రీక్వెన్సీ స్కేలింగ్ గుర్తుందా? ఈ ఎంపికలు అందుబాటులో ఉన్నాయి nix మరియు Windows నుండి ప్రాసెసర్ థొరెటల్ సెట్టింగ్ను మార్చడం ద్వారా సిస్టమ్ పనితీరు మరియు ప్రతిస్పందనను మెరుగుపరచవచ్చు కోరిక మేరకు న పనితీరు*. ఈసారి, వివరణలను సరిపోల్చండి మరియు సారూప్యతలను చూద్దాం:
governor=ఒన్డెమాండ్ - ప్రస్తుత లోడ్పై ఆధారపడి ప్రాసెసర్ ఫ్రీక్వెన్సీ యొక్క డైనమిక్ స్కేలింగ్. గరిష్ట పౌనఃపున్యానికి వేగంగా దూకుతుంది మరియు నిష్క్రియాత్మక కాలాలు పెరిగేకొద్దీ దానిని తగ్గిస్తుంది.
governor=conservative= ప్రస్తుత లోడ్పై ఆధారపడి డైనమిక్ ఫ్రీక్వెన్సీ స్కేలింగ్. Ondemand కంటే మరింత సాఫీగా ఫ్రీక్వెన్సీని పెంచుతుంది మరియు తగ్గిస్తుంది.
గవర్నర్ = పనితీరు - ఫ్రీక్వెన్సీ ఎల్లప్పుడూ గరిష్టంగా ఉంటుంది.
వివరాల కోసం, చూడండి
సారూప్యతలు చూశారా? నేను ఈ పోలికను ఉపయోగించడం ఉత్తమమని మిమ్మల్ని ఒప్పించాలనుకుంటున్నాను pm స్టాటిక్ PHP-FPM కోసం.
ప్రాసెసర్ రెగ్యులేటర్ పరామితి కోసం ప్రదర్శన ఇది దాదాపు పూర్తిగా సర్వర్ యొక్క CPU పరిమితిపై ఆధారపడి ఉండటం వలన పనితీరును సురక్షితంగా పెంచడంలో సహాయపడుతుంది. దీనికి అదనంగా, వాస్తవానికి, ఉష్ణోగ్రత, బ్యాటరీ ఛార్జ్ (ల్యాప్టాప్లో) మరియు ప్రాసెసర్ను నిరంతరం 100% వద్ద అమలు చేయడం వల్ల ఇతర దుష్ప్రభావాలు వంటి అంశాలు కూడా ఉన్నాయి. పనితీరు సెట్టింగ్ వేగవంతమైన ప్రాసెసర్ పనితీరును నిర్ధారిస్తుంది. ఉదాహరణకు, గురించి చదవండి
గరిష్ట సర్వర్ పనితీరును సాధించడానికి pm స్టాటిక్ని ఉపయోగించడం
PHP-FPM ఎంపిక pm స్టాటిక్ సర్వర్లోని ఉచిత మెమరీపై ఎక్కువగా ఆధారపడి ఉంటుంది. మెమరీ తక్కువగా ఉంటే, ఎంచుకోవడం మంచిది కోరిక మేరకు లేదా డైనమిక్. మరోవైపు, మీకు మెమరీ ఉంటే, మీరు pm సెట్ చేయడం ద్వారా PHP ప్రాసెస్ మేనేజర్ ఓవర్హెడ్ను నివారించవచ్చు స్టాటిక్ గరిష్ట సర్వర్ సామర్థ్యానికి. మరో మాటలో చెప్పాలంటే, ప్రతిదీ బాగా లెక్కించినట్లయితే, మీరు ఏర్పాటు చేయాలి pm.స్టాటిక్ అమలు చేయగల PHP-FPM ప్రక్రియల గరిష్ట పరిమాణానికి, తక్కువ మెమరీ లేదా కాష్తో సమస్యలను సృష్టించకుండా. కానీ చాలా ఎక్కువ కాదు, ఇది ప్రాసెసర్లను కప్పివేస్తుంది మరియు అమలు చేయడానికి వేచి ఉన్న PHP-FPM కార్యకలాపాల సమూహాన్ని కూడగట్టుకుంటుంది.
పై స్క్రీన్షాట్లో, సర్వర్ ఉంది pm = స్టాటిక్ మరియు pm.max_children = 100, మరియు ఇది అందుబాటులో ఉన్న 10లో సుమారు 32 GBని తీసుకుంటుంది. హైలైట్ చేసిన నిలువు వరుసలపై శ్రద్ధ వహించండి, ఇక్కడ ప్రతిదీ స్పష్టంగా ఉంది. ఈ స్క్రీన్షాట్లో Google Analyticsలో దాదాపు 200 మంది క్రియాశీల వినియోగదారులు (60 సెకన్ల కంటే ఎక్కువ) ఉన్నారు. ఈ స్థాయిలో, దాదాపు 70% PHP-FPM చైల్డ్ ప్రాసెస్లు ఇప్పటికీ నిష్క్రియంగా ఉన్నాయి. ప్రస్తుత ట్రాఫిక్తో సంబంధం లేకుండా PHP-FPM ఎల్లప్పుడూ గరిష్ట సర్వర్ వనరులకు సెట్ చేయబడుతుందని దీని అర్థం. నిష్క్రియ ప్రక్రియ ట్రాఫిక్ పీక్స్ కోసం వేచి ఉంటుంది మరియు తక్షణమే ప్రతిస్పందిస్తుంది. మీరు వరకు వేచి ఉండాల్సిన అవసరం లేదు pm చైల్డ్ ప్రాసెస్లను క్రియేట్ చేస్తుంది మరియు వ్యవధి ముగిసినప్పుడు వాటిని రద్దు చేస్తుంది pm.process_idle_timeout. నేను విలువను చాలా ఎక్కువగా సెట్ చేసాను pm.max_requestsఎందుకంటే ఇది PHPలో మెమరీ లీక్లు లేని పని చేసే సర్వర్. మీరు ఇన్స్టాల్ చేసుకోవచ్చు pm.max_requests = 0 మీరు ఇప్పటికే ఉన్న మరియు భవిష్యత్ PHP స్క్రిప్ట్లపై పూర్తిగా నమ్మకంగా ఉంటే స్టాటిక్తో. కానీ కాలక్రమేణా స్క్రిప్ట్లను మళ్లీ అమలు చేయడం మంచిది. పెద్ద సంఖ్యలో అభ్యర్థనలను సెట్ చేయండి, ఎందుకంటే మేము అనవసరమైన pm ఖర్చులను నివారించాలనుకుంటున్నాము. ఉదాహరణకు, కనీసం pm.max_requests = 1000 - పరిమాణాన్ని బట్టి pm.గరిష్టంగా_పిల్లలు మరియు సెకనుకు అభ్యర్థనల సంఖ్య.
స్క్రీన్షాట్ ఆదేశాన్ని చూపుతుంది
top -bn1 | grep php-fpm
pm ondemand మరియు డైనమిక్ ఎప్పుడు ఉపయోగించాలి
మీరు pm ఉపయోగిస్తే డైనమిక్, ఇలాంటి లోపాలు సంభవిస్తాయి:
WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children
పరామితిని మార్చడానికి ప్రయత్నించండి, లోపం పోదు
PM డైనమిక్ మరియు ముఖ్యంగా కోరిక మేరకు మీరు బహుళ PHP-FPM పూల్లను కలిగి ఉంటే ఉపయోగకరంగా ఉండవచ్చు. ఉదాహరణకు, మీరు వివిధ పూల్లలో బహుళ cPanel ఖాతాలు లేదా బహుళ వెబ్సైట్లను హోస్ట్ చేస్తారు. నాకు 100+ cpanel ఖాతాలు మరియు దాదాపు 200 డొమైన్లతో సర్వర్ ఉంది మరియు pm.static లేదా డైనమిక్ కూడా నన్ను సేవ్ చేయదు. ఇక్కడ మీకు కావలసిందల్లా కోరిక మేరకు, అన్నింటికంటే, మూడింట రెండు వంతుల కంటే ఎక్కువ వెబ్సైట్లు తక్కువ లేదా ట్రాఫిక్ను పొందవు మరియు వాటితో కోరిక మేరకు అన్ని పిల్లల ప్రక్రియలు పడిపోతాయి, ఇది మనకు చాలా మెమరీని ఆదా చేస్తుంది! అదృష్టవశాత్తూ, cPanel డెవలపర్లు దీనిని గమనించారు మరియు విలువను డిఫాల్ట్గా సెట్ చేసారు కోరిక మేరకు. గతంలో, డిఫాల్ట్గా ఉన్నప్పుడు డైనమిక్, PHP-FPM బిజీ షేర్డ్ సర్వర్లకు అస్సలు తగినది కాదు. చాలా మంది ఉపయోగించారు suPHP, ఎందుకంటే pm డైనమిక్ నిష్క్రియ పూల్స్ మరియు cPanel PHP-FPM ఖాతాలతో కూడా మెమరీ వినియోగించబడుతుంది. చాలా మటుకు, ట్రాఫిక్ బాగా ఉంటే, మీరు పెద్ద సంఖ్యలో PHP-FPM పూల్స్ (షేర్డ్ హోస్టింగ్) ఉన్న సర్వర్లో హోస్ట్ చేయబడరు.
తీర్మానం
మీరు PHP-FPMని ఉపయోగిస్తుంటే మరియు మీ ట్రాఫిక్ భారీగా ఉంటే, ప్రాసెస్ మేనేజర్లు కోరిక మేరకు и డైనమిక్ PHP-FPM కోసం వాటి స్వాభావిక ఓవర్హెడ్ కారణంగా పరిమిత నిర్గమాంశ ఉంటుంది. మీ సిస్టమ్ను అర్థం చేసుకోండి మరియు గరిష్ట సర్వర్ సామర్థ్యం ప్రకారం PHP-FPM ప్రక్రియలను కాన్ఫిగర్ చేయండి. మొదటి సెట్ pm.గరిష్టంగా_పిల్లలు గరిష్ట pm వినియోగంపై ఆధారపడి ఉంటుంది డైనమిక్ లేదా కోరిక మేరకు, ఆపై ఈ విలువను మెమరీ మరియు ప్రాసెసర్ ఓవర్లోడ్ చేయకుండా పని చేసే స్థాయికి పెంచండి. దానితో మీరు గమనించవచ్చు pm స్టాటిక్, మీరు మెమరీలో ప్రతిదీ కలిగి ఉన్నందున, ట్రాఫిక్ స్పైక్లు కాలక్రమేణా తక్కువ CPU స్పైక్లకు కారణమవుతాయి మరియు సర్వర్ మరియు CPU లోడ్ సగటులు సమం అవుతాయి. సగటు PHP-FPM ప్రాసెస్ పరిమాణం వెబ్ సర్వర్పై ఆధారపడి ఉంటుంది మరియు మాన్యువల్ కాన్ఫిగరేషన్ అవసరం, కాబట్టి ఎక్కువ ఆటోమేటెడ్ ప్రాసెస్ మేనేజర్లు డైనమిక్ и కోరిక మేరకు - ఎక్కువ ప్రజాదరణ పొందిన. వ్యాసం ఉపయోగకరంగా ఉందని నేను ఆశిస్తున్నాను.
DUP బెంచ్ మార్క్ చార్ట్ జోడించబడింది
మూలం: www.habr.com