PHP-FPM ማዋቀር፡ ለከፍተኛ አፈጻጸም pm static ይጠቀሙ

PHP-FPM ማዋቀር፡ ለከፍተኛ አፈጻጸም pm static ይጠቀሙ

ያልተስተካከለው የጽሁፉ እትም መጀመሪያ የታተመው በ ላይ ነው። haydenjames.io እና በእሷ ፍቃድ እዚህ ታትሟል. ደራሲ.

በአጭር አነጋገር፣ የሂደቱን መጠን ለመጨመር፣ መዘግየትን ለመቀነስ እና ሲፒዩ እና ማህደረ ትውስታን በተከታታይ ለመጠቀም 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.max_ልጆች.

ውስጥ ዝርዝሮችን ይመልከቱ የተሟላ የአለምአቀፍ php-fpm.conf መመሪያዎች ዝርዝር.

በ PHP-FPM ሂደት አስተዳዳሪ እና በሲፒዩ ፍጥነት ገዥ መካከል ያሉ ተመሳሳይነቶች

ይህ ከርዕስ ውጭ ሊመስል ይችላል፣ ግን ይህን ከPHP-FPM ማዋቀር ርዕስ ጋር ላገናኘው ነው። ቢያንስ አንድ ጊዜ ፕሮሰሰሩን ያላዘገመ ማን ነው - በላፕቶፕ ፣ በቨርቹዋል ማሽን ወይም በልዩ አገልጋይ። የሲፒዩ ድግግሞሽ ልኬትን አስታውስ? እነዚህ አማራጮች ይገኛሉ nix እና Windows የሲፒዩ ገዥ መቼቱን ከ በመቀየር የስርዓት አፈጻጸምን እና ምላሽ ሰጪነትን ሊያሻሽሉ ይችላሉ። በፍላጎት ላይ አፈጻጸም *. በዚህ ጊዜ፣ መግለጫዎቹን እናነፃፅር እና ተመሳሳይነቶችን እንመልከት፡-

ገዥ = ጥያቄ - አሁን ባለው ጭነት ላይ በመመስረት የአቀነባባሪው ድግግሞሽ ተለዋዋጭ ልኬት። በድንገት ወደ ከፍተኛ ድግግሞሽ ይዘልላል እና የስራ ፈት ወቅቶች ሲጨምሩ ዝቅ ያደርገዋል።
ገዥ = ወግ አጥባቂ = አሁን ባለው ጭነት ላይ በመመስረት ተለዋዋጭ ድግግሞሽ ልኬት። ከፍላጎት ይልቅ በተቀላጠፈ ሁኔታ ድግግሞሹን ይጨምራል እና ይቀንሳል።
ገዥ = አፈጻጸም - ድግግሞሽ ሁልጊዜ ከፍተኛ ነው.

ውስጥ ዝርዝሮችን ይመልከቱ የሲፒዩ ድግግሞሽ ገዥ መለኪያዎች ሙሉ ዝርዝር.

መመሳሰል እዩ? ለመጠቀም ከሁሉ የተሻለው መንገድ ምን እንደሆነ ለማሳመን ይህንን ንፅፅር ለማሳየት ፈልጌ ነበር። pm የማይንቀሳቀስ ለ PHP-FPM.

ለአቀነባባሪ ገዥ መለኪያ አፈጻጸም በአስተማማኝ ሁኔታ አፈጻጸሙን ለመጨመር ይረዳል, ምክንያቱም ሙሉ በሙሉ በአገልጋዩ ፕሮሰሰር ገደብ ላይ የተመሰረተ ነው. በተጨማሪም ፣ በእርግጥ ፣ እንደ የሙቀት መጠን ፣ የባትሪ ክፍያ (በላፕቶፕ ውስጥ) እና ሌሎች ፕሮሰሰሩን በ 100% በቋሚነት ማስኬድ ያሉ ሌሎች ምክንያቶችም አሉ። የአፈጻጸም መቼት በጣም ፈጣኑን የፕሮሰሰር አፈጻጸም ያቀርባል። ለምሳሌ አንብብ። የኃይል_ቱርቦ መለኪያ በ Raspberry Piየ Rpi ፓነል መቆጣጠሪያውን የሚጠቀምበት አፈጻጸም, ዝቅተኛ የሲፒዩ ሰዓት ፍጥነት ምክንያት የአፈጻጸም ማሻሻያ ይበልጥ የሚታይ ይሆናል የት.

ለከፍተኛ የአገልጋይ አፈጻጸም pm static በመጠቀም

የ PHP-FPM ቅንብር pm የማይንቀሳቀስ በአብዛኛው የተመካው በአገልጋዩ ላይ ባለው ነፃ ማህደረ ትውስታ ላይ ነው። በቂ ማህደረ ትውስታ ከሌለ, መምረጥ የተሻለ ነው በፍላጎት ወይም ተለዋዋጭ. በሌላ በኩል፣ ማህደረ ትውስታ ካለህ፣ pm ን በማቀናበር የPHP ሂደቱን ማናጀር ከራስ መቆጠብ ትችላለህ የማይንቀሳቀስ ወደ አገልጋዩ ከፍተኛው አቅም. በሌላ አነጋገር, ሁሉም ነገር በደንብ ከተሰላ, መጫን ያስፈልግዎታል pm.static ሊሰራ የሚችል ከፍተኛው የ PHP-FPM ሂደቶች መጠን፣ ከማህደረ ትውስታ ውጭ ወይም መሸጎጫ ችግሮችን ሳያስከትል። ነገር ግን ያን ያህል ከፍ ያለ አይደለም ፕሮሰሰሮችን ከመጠን በላይ ስለሚጭን በርካታ ፒኤችፒ-ኤፍፒኤም ኦፕሬሽኖችን ይከማቻል።.

PHP-FPM ማዋቀር፡ ለከፍተኛ አፈጻጸም pm static ይጠቀሙ

ከላይ ባለው የቅጽበታዊ ገጽ እይታ አገልጋዩ አለው። pm = የማይንቀሳቀስ እና pm.max_children = 100, እና ይህ ካለው 10 ጂቢ ገደማ ይወስዳል 32. ለደመቁት አምዶች ትኩረት ይስጡ, ለማንኛውም ሁሉም ነገር እዚህ ግልጽ ነው. በዚህ ቅጽበታዊ ገጽ እይታ፣ በጎግል አናሌቲክስ ውስጥ ወደ 200 የሚጠጉ ንቁ ተጠቃሚዎች (ከ60 ሰከንድ በላይ) ነበሩ። በዚህ ደረጃ፣ በግምት 70% የሚሆነው የPHP-FPM የልጅ ሂደቶች አሁንም ስራ ፈት ናቸው። ይህ ማለት የአሁኑ ትራፊክ ምንም ይሁን ምን PHP-FPM ሁልጊዜ ወደ ከፍተኛው የአገልጋይ ሀብቶች መጠን ይዘጋጃል። ስራ ፈት ሂደት በትራፊክ ውስጥ ከፍተኛ ቦታዎችን ይጠብቃል እና ወዲያውኑ ምላሽ ይሰጣል. ድረስ መጠበቅ አያስፈልግዎትም pm የልጅ ሂደቶችን ይፈጥራል እና የወር አበባው ሲያልቅ ያቆማል pm.ሂደቱ_ያለ_ጊዜ ማብቂያ. በጣም ትልቅ ዋጋ አዘጋጅቻለሁ pm.max_ጥያቄዎችበ PHP ውስጥ ምንም የማስታወሻ ፍሳሽ የሌለበት ፕሮዳክሽን አገልጋይ ስለሆነ። መጫን ትችላለህ pm.max_requests = 0 በአሁን እና ወደፊት በPHP ስክሪፕቶች ሙሉ በሙሉ የሚተማመኑ ከሆነ ከስታቲክ ጋር። ግን በጊዜ ሂደት ስክሪፕቶችን እንደገና ማስጀመር ይሻላል። ብዙ የጥያቄዎች ብዛት ያዘጋጁ፣ ምክንያቱም አላስፈላጊ የከሰዓት ክፍያን ለማስወገድ እንፈልጋለን። ለምሳሌ, ቢያንስ pm.max_requests = 1000 - እንደ ብዛት ይወሰናል pm.max_ልጆች እና በሰከንድ የጥያቄዎች ብዛት።

ቅጽበታዊ ገጽ እይታው ትዕዛዙን ያሳያል የሊኑክስ የላይኛውበ u (ተጠቃሚ) እና በPHP-FPM የተጠቃሚ ስም የተጣራ። የመጀመሪያዎቹ 50 ወይም ከዚያ በላይ ሂደቶች ብቻ ናቸው የሚታየው (በትክክል አልቆጠርኩም)፣ ነገር ግን፣ በእውነቱ፣ ከላይ ወደ ተርሚናል መስኮት የሚገቡትን ከፍተኛ ስታቲስቲክስ ያሳያል። በዚህ አጋጣሚ በ% ሲፒዩ (% ሲፒዩ) ተደርድሯል። ሁሉንም 100 PHP-FPM ሂደቶች ለማየት ትዕዛዙን ያሂዱ፡-

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

መለኪያውን ለመለወጥ ይሞክሩ, ስህተቱ የትም አይሄድም, እንደ በዚህ ልጥፍ በServerfault ላይ ተገልጿል. በዚህ አጋጣሚ የ pm.min ዋጋ በጣም ትንሽ ነበር፣ እና የድር ትራፊክ ብዙ ስለሚለያይ እና ከፍተኛ ጫፎች እና ጥልቅ መውደቅ ስላለው፣ pmን በትክክል ማስተካከል ከባድ ነው። ተለዋዋጭ. ብዙውን ጊዜ ይህ የሚከናወነው pm በመጠቀም ነው። በፍላጎት, በተመሳሳይ ጽሁፍ ላይ እንደተመከረው. ግን የበለጠ የከፋ ነው, ምክንያቱም በፍላጎት ትንሽ ወይም ምንም ትራፊክ በማይኖርበት ጊዜ የስራ ፈት ሂደቶችን ወደ ዜሮ ያጠፋል፣ እና እርስዎ ለማንኛውም ትራፊክ የመቀየር ከፍተኛ ጫና ይደርስብዎታል። በእርግጥ ትልቅ የጊዜ ገደብ ካላዘጋጁ በስተቀር። እና ከዚያ መጠቀም የተሻለ ነው pm.static + ከፍተኛ ቁጥር pm.max_ጥያቄዎች.

PM ተለዋዋጭ እና በተለይም በፍላጎት ብዙ የ PHP-FPM ገንዳዎች ካሉዎት ጠቃሚ ሊሆን ይችላል። ለምሳሌ፣ በተለያዩ ገንዳዎች ውስጥ በርካታ cPanel መለያዎችን ወይም በርካታ ድር ጣቢያዎችን ያስተናግዳሉ። 100+ cpanel መለያዎች እና ወደ 200 የሚጠጉ ጎራዎች፣ እና pm.static ወይም dynamic እንኳ የማያድነኝ አገልጋይ አለኝ። እዚህ ብቻ ያስፈልግዎታል በፍላጎት, ምክንያቱም ከሁለት ሦስተኛ በላይ የሚሆኑት ድህረ ገፆች ትንሽ ወይም ምንም ትራፊክ አይቀበሉም, እና በ በፍላጎት ሁሉም የልጆች ሂደቶች ይወድቃሉ, ይህም ብዙ ማህደረ ትውስታን ያድናል! እንደ እድል ሆኖ የ cPanel ገንቢዎች ይህንን አስተውለው ነባሪውን እሴት አዘጋጅተዋል። በፍላጎት. ቀደም ሲል, ነባሪው በነበረበት ጊዜ ተለዋዋጭ፣ PHP-FPM በአጠቃላይ ለተጋሩ አገልጋዮች ተስማሚ አልነበረም። ብዙዎች ተጠቅመዋል suPHPምክንያቱም pm ተለዋዋጭ በስራ ፈት ገንዳዎች እና በPHP-FPM cPanel መለያዎች እንኳን ማህደረ ትውስታን ይበላ ነበር። ምናልባት፣ ጥሩ ትራፊክ ካለህ፣ ብዙ ቁጥር ያላቸው ፒኤችፒ-ኤፍፒኤም ገንዳዎች (የተጋራ ማስተናገጃ) ባለው አገልጋይ ላይ አይስተናገዱም።

መደምደሚያ

ፒኤችፒ-ኤፍፒኤም እየተጠቀሙ ከሆነ እና ትራፊክዎ ከባድ ከሆነ የሂደት አስተዳዳሪዎች በፍላጎት и ተለዋዋጭ ፒኤችፒ-ኤፍፒኤም በተፈጥሯቸው ከመጠን በላይ በመተላለፊያ ይዘት የተገደበ ይሆናል። ስርዓትዎን ይማሩ እና የPHP-FPM ሂደቶችን በአገልጋዩ ከፍተኛ አቅም መሰረት ያቀናብሩ። የመጀመሪያው ስብስብ pm.max_ልጆች እንደ ከፍተኛው አጠቃቀም pm ተለዋዋጭ ወይም በፍላጎት, እና ከዚያ ይህን እሴት ወደ ማህደረ ትውስታ እና ፕሮሰሰር ከመጠን በላይ መጫን ወደሚሰራበት ደረጃ ይጨምሩ. ጋር ያንን ያስተውላሉ pm የማይንቀሳቀስ, ሁሉም ነገር በማህደረ ትውስታ ውስጥ ስላለዎት, የትራፊክ ቁንጮዎች በጊዜ ሂደት ለአቀነባባሪው ጥቂት ጫፎችን ያስከትላሉ, እና የአገልጋዩ እና የፕሮሰሰር ጭነት አማካኞች እኩል ይሆናሉ. አማካይ የPHP-FPM የሂደት መጠን በድር አገልጋይ ላይ የሚመረኮዝ እና በእጅ ውቅር ያስፈልገዋል፣ስለዚህ ተጨማሪ አውቶሜትድ የሂደት አስተዳዳሪዎች - ተለዋዋጭ и በፍላጎት - የበለጠ ተወዳጅ ናቸው. ጽሑፉ ጠቃሚ ነበር ብዬ ተስፋ አደርጋለሁ።

DUP የቤንችማርክ ገበታ ታክሏል። ab. የPHP-FPM ሂደቶች በማህደረ ትውስታ ውስጥ ካሉ፣ ተቀምጠው የሚጠብቁበት ማህደረ ትውስታን በመውሰድ አፈፃፀሙ ይጨምራል። ለእርስዎ በጣም ጥሩውን አማራጭ ያግኙ።

PHP-FPM ማዋቀር፡ ለከፍተኛ አፈጻጸም pm static ይጠቀሙ

ምንጭ: hab.com

አስተያየት ያክሉ