PHP-FPM සැකසුම: උපරිම කාර්ය සාධනය සඳහා pm ස්ථිතික භාවිතා කරන්න

PHP-FPM සැකසුම: උපරිම කාර්ය සාධනය සඳහා pm ස්ථිතික භාවිතා කරන්න

මෙම ලිපියේ සංස්කරණය නොකළ අනුවාදයක් මුලින් ප්‍රකාශයට පත් කරන ලදී haydenjames.io සහ ඇයගේ අවසරය ඇතිව මෙහි පළ කර ඇත කර්තෘ.

ප්‍රතිදානය වැඩි කිරීමට, ප්‍රමාදය අඩු කිරීමට සහ CPU සහ මතකය වඩාත් ස්ථාවර ලෙස භාවිතා කිරීමට PHP-FPM වින්‍යාස කරන්නේ කෙසේදැයි මම ඔබට කෙටියෙන් කියන්නම්. පෙරනිමියෙන්, PHP-FPM හි PM (ක්‍රියාවලි කළමනාකරු) රේඛාව වේ ගතිකය, සහ ඔබට ප්‍රමාණවත් මතකයක් නොමැති නම්, එය ස්ථාපනය කිරීම වඩා හොඳය ඉල්ලුම මත. අපි php.net ප්‍රලේඛනය මත පදනම්ව පාලන විකල්ප 2 ක් සංසන්දනය කර මගේ ප්‍රියතම ඒවායින් වෙනස් වන්නේ කෙසේදැයි බලමු. ස්ථිතිකයි අධික වාහන තදබදය සඳහා pm:

pm = ගතික - ළමා ක්‍රියාවලි ගණන පහත සඳහන් විධාන මත පදනම්ව ගතිකව වින්‍යාස කර ඇත: pm.max_children, pm.start_servers,pm.min_spar_servers, pm.max_spare_servers.
pm = ondemand - ක්‍රියාවලි ඉල්ලුම මත නිර්මාණය වේ (ගතික නිර්මාණයට ප්‍රතිවිරුද්ධව, සේවාව ආරම්භ වන විට pm.start_servers දියත් කරන විට).
pm = ස්ථිතික - ළමා ක්රියාවලීන් සංඛ්යාව ස්ථාවර වන අතර පරාමිතිය මගින් පෙන්නුම් කෙරේ pm.max_ළමයින්.

විස්තර සඳහා, බලන්න ගෝලීය නියමයන්ගේ සම්පූර්ණ ලැයිස්තුව php-fpm.conf.

PHP-FPM ක්‍රියාවලි කළමනාකරු සහ CPU සංඛ්‍යාත පාලකය අතර සමානකම්

මෙය ඔෆ්ටොපික් ලෙස පෙනෙන්නට ඇත, නමුත් මම මෙය PHP-FPM වින්‍යාස කිරීමේ මාතෘකාවට සම්බන්ධ කරමි. අවම වශයෙන් එක් වරක්වත් ප්‍රොසෙසරයේ මන්දගාමිත්වය අත්විඳ නැති අය - ලැප්ටොප් එකක, අතථ්‍ය යන්ත්‍රයක හෝ කැපවූ සේවාදායකයක. CPU සංඛ්‍යාත පරිමාණය මතකද? සඳහා මෙම විකල්ප තිබේ nix සහ Windows හට ප්‍රොසෙසර ත්‍රොටල් සැකසුම වෙනස් කිරීමෙන් පද්ධති ක්‍රියාකාරිත්වය සහ ප්‍රතිචාර දැක්වීම වැඩිදියුණු කළ හැක ඉල්ලුම මත මත කාර්ය සාධනය*. මෙවර, අපි විස්තර සංසන්දනය කර සමානකම් දෙස බලමු:

governor=ඉල්ලීම - වත්මන් භාරය මත පදනම්ව ප්රොසෙසර සංඛ්යාතයේ ගතික පරිමාණය. උපරිම සංඛ්‍යාතය වෙත වේගයෙන් පනින අතර පසුව අක්‍රියතා කාලය වැඩි වන විට එය අඩු කරයි.
governor=conservative= වත්මන් භාරය මත පදනම්ව ගතික සංඛ්යාත පරිමාණය. ondemand වලට වඩා සුමට ලෙස සංඛ්‍යාතය වැඩි කිරීම සහ අඩු කිරීම.
ආණ්ඩුකාර = කාර්ය සාධනය - සංඛ්යාතය සෑම විටම උපරිම වේ.

විස්තර සඳහා, බලන්න ප්‍රොසෙසර සංඛ්‍යාත නියාමක පරාමිතීන්ගේ සම්පූර්ණ ලැයිස්තුව.

සමානකම් බලන්න? මට මෙම සංසන්දනය පෙන්වීමට අවශ්‍ය වූයේ එය භාවිතා කිරීම වඩාත් සුදුසු බව ඔබට ඒත්තු ගැන්වීමටයි pm ස්ථිතික PHP-FPM සඳහා.

ප්රොසෙසර නියාමක පරාමිතිය සඳහා කාර්ය සාධනය එය සම්පූර්ණයෙන්ම වාගේ සේවාදායකයේ CPU සීමාව මත රඳා පවතින නිසා ආරක්ෂිතව කාර්ය සාධනය වැඩි කිරීමට උපකාරී වේ. මීට අමතරව, ඇත්ත වශයෙන්ම, උෂ්ණත්වය, බැටරි ආරෝපණය (ලැප්ටොප් එකක) සහ ප්‍රොසෙසරය 100% ක් අඛණ්ඩව ක්‍රියාත්මක කිරීමේ වෙනත් අතුරු ආබාධ වැනි සාධක ද ​​ඇත. කාර්ය සාධන සැකසුම වේගවත්ම ප්රොසෙසර කාර්ය සාධනය සහතික කරයි. උදාහරණයක් ලෙස, ගැන කියවන්න Raspberry Pi හි force_turbo පරාමිතියRPi පැනලය නියාමකය භාවිතා කරනු ඇත කාර්ය සාධනය, අඩු CPU ඔරලෝසු වේගය හේතුවෙන් කාර්ය සාධනය වැඩිදියුණු කිරීම වඩාත් කැපී පෙනෙනු ඇත.

උපරිම සේවාදායක කාර්ය සාධනය ලබා ගැනීම සඳහා pm ස්ථිතික භාවිතා කිරීම

PHP-FPM විකල්පය pm ස්ථිතික බොහෝ දුරට සේවාදායකයේ නිදහස් මතකය මත රඳා පවතී. මතකය අඩු නම්, එය තෝරා ගැනීම වඩා හොඳය ඉල්ලුම මත හෝ ගතිකය. අනෙක් අතට, ඔබට මතකය තිබේ නම්, pm සැකසීමෙන් ඔබට PHP ක්‍රියාවලි කළමණාකරුට ඉහළින් මඟ හැරිය හැක ස්ථිතිකයි උපරිම සේවාදායක ධාරිතාව දක්වා. වෙනත් වචන වලින් කිවහොත්, සෑම දෙයක්ම හොඳින් ගණනය කර ඇත්නම්, ඔබ ස්ථාපිත කළ යුතුය pm.ස්ථිතික ක්‍රියාත්මක කළ හැකි PHP-FPM ක්‍රියාවලිවල උපරිම පරිමාවට, අඩු මතකය හෝ හැඹිලි සමඟ ගැටළු ඇති නොකර. නමුත් එය ප්‍රොසෙසර යටපත් කර ක්‍රියාත්මක කිරීමට බලා සිටින PHP-FPM මෙහෙයුම් පොකුරක් සමුච්චය කරන තරමට ඉහළ නොවේ..

PHP-FPM සැකසුම: උපරිම කාර්ය සාධනය සඳහා pm ස්ථිතික භාවිතා කරන්න

ඉහත තිර පිටපතෙහි, සේවාදායකය සතුව ඇත pm = ස්ථිතික සහ pm.max_children = 100, සහ මෙය පවතින 10 න් 32 GB පමණ ගනී. උද්දීපනය කළ තීරු වෙත අවධානය යොමු කරන්න, මෙහි සියල්ල පැහැදිලිය. මෙම තිර රුවෙහි Google Analytics හි ආසන්න වශයෙන් සක්‍රිය පරිශීලකයින් 200ක් (තත්පර 60කට වඩා වැඩි) සිටියහ. මෙම මට්ටමේදී, PHP-FPM ළමා ක්‍රියාවලීන්ගෙන් 70%ක් පමණ තවමත් අක්‍රියව පවතී. මෙයින් අදහස් කරන්නේ වත්මන් ගමනාගමනය නොසලකා PHP-FPM සෑම විටම උපරිම සේවාදායක සම්පත් ප්‍රමාණයට සකසා ඇති බවයි. නිෂ්ක්‍රීය ක්‍රියාවලියක් රථවාහන උපරිම වන තෙක් බලා සිටින අතර ක්ෂණිකව ප්‍රතිචාර දක්වයි. ඔබ තෙක් බලා සිටිය යුතු නැත pm ළමා ක්රියාවලීන් නිර්මාණය කර පසුව කාල සීමාව අවසන් වන විට ඒවා අවසන් කරනු ඇත pm.process_idle_timeout. මම අගය ඉතා ඉහළ අගයකට සකසමි pm.max_requestsමන්ද මෙය PHP හි මතක කාන්දුවක් නොමැති වැඩ කරන සේවාදායකයකි. ඔබට ස්ථාපනය කළ හැකිය pm.max_requests = 0 පවතින සහ අනාගත PHP ස්ක්‍රිප්ට් ගැන ඔබට සම්පූර්ණයෙන්ම විශ්වාස නම් ස්ථිතික සමඟ. නමුත් කාලයත් සමඟ පිටපත් නැවත ධාවනය කිරීම වඩා හොඳය. අපට අනවශ්‍ය pm වියදම් වළක්වා ගැනීමට අවශ්‍ය නිසා ඉල්ලීම් විශාල ප්‍රමාණයක් සකසන්න. උදාහරණයක් ලෙස, අවම වශයෙන් pm.max_requests = 1000 - ප්රමාණය අනුව pm.max_ළමයින් සහ තත්පරයකට ඉල්ලීම් ගණන.

තිර පිටපත විධානය පෙන්වයි ලිනක්ස් ඉහළ, u (පරිශීලක) සහ PHP-FPM පරිශීලක නාමය මගින් පෙරීම. පළමු ක්‍රියාවලි 50 ක් හෝ ඊට වැඩි ප්‍රමාණයක් පමණක් පෙන්වනු ලැබේ (මම හරියටම ගණන් නොගත්තෙමි), නමුත් අත්‍යවශ්‍යයෙන්ම ඉහළින් ටර්මිනල් කවුළුවට ගැලපෙන ඉහළ සංඛ්‍යාලේඛන පෙන්වයි. මෙම අවස්ථාවේදී % CPU (%CPU) අනුව වර්ග කර ඇත. සියලුම 100 PHP-FPM ක්‍රියාවලි බැලීමට, විධානය ක්‍රියාත්මක කරන්න:

top -bn1 | grep php-fpm

pm ondemand සහ dynamic භාවිතා කළ යුත්තේ කවදාද

ඔබ 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.min අගය ඉතා කුඩා වූ අතර, වෙබ් ගමනාගමනය බෙහෙවින් වෙනස් වන අතර ඉහළ කඳු මුදුන් සහ ගැඹුරු නිම්න ඇති බැවින්, pm ප්‍රමාණවත් ලෙස සකස් කිරීම අපහසු වේ. ගතිකය. සාමාන්යයෙන් pm භාවිතා වේ ඉල්ලුම මත, එකම තනතුරේ උපදෙස් දී ඇති පරිදි. නමුත් මෙය ඊටත් වඩා නරක ය, මන්ද ඉල්ලුම මත ගමනාගමනය අඩු හෝ නොමැති විට නිෂ්ක්‍රීය ක්‍රියාවලි බිංදුවට අවසන් කරයි, සහ ඔබට තවමත් ගමනාගමනය වෙනස් කිරීමේ උඩිස් කාර්ය සිදුවනු ඇත. ඇත්ත වශයෙන්ම, ඔබ විශාල පොරොත්තු කාලයක් සකසා නොමැති නම්. ඉන්පසු එය භාවිතා කිරීම වඩා හොඳය pm.ස්ථිතික + ඉහළ අංකය pm.max_requests.

PM ගතිකය සහ විශේෂයෙන් ඉල්ලුම මත ඔබට PHP-FPM සංචිත කිහිපයක් තිබේ නම් එය ප්‍රයෝජනවත් විය හැක. උදාහරණයක් ලෙස, ඔබ විවිධ සංචිතවල cPanel ගිණුම් කිහිපයක් හෝ වෙබ් අඩවි කිහිපයක් සත්කාරකත්වය දරයි. මා සතුව cpanel ගිණුම් 100+ සහ වසම් 200ක් පමණ ඇති සේවාදායකයක් ඇති අතර pm.static හෝ dynamic පවා මා සුරැකෙන්නේ නැත. ඔබට අවශ්‍ය වන්නේ මෙහි පමණි ඉල්ලුම මත, සියල්ලට පසු, වෙබ් අඩවිවලින් තුනෙන් දෙකකට වඩා අඩුවෙන් හෝ ගමනාගමනය නොලැබේ, සහ සමඟ ඉල්ලුම මත සියලුම ළමා ක්‍රියාවලීන් පහත වැටෙනු ඇත, එමඟින් අපට මතකය විශාල ප්‍රමාණයක් ඉතිරි වේ! වාසනාවකට මෙන්, cPanel සංවර්ධකයින් මෙය දුටු අතර අගය පෙරනිමියට සකසා ඇත ඉල්ලුම මත. පෙර, පෙරනිමිය වූ විට ගතිකය, PHP-FPM කිසිසේත්ම කාර්යබහුල බෙදාගත් සේවාදායකයන් සඳහා සුදුසු නොවේ. බොහෝ දෙනෙක් භාවිතා කර ඇත suPHP, මොකද ප.ව ගතිකය නිෂ්ක්‍රීය තටාක සහ cPanel PHP-FPM ගිණුම් සමඟ පවා මතකය පරිභෝජනය කරයි. බොහෝ දුරට, ගමනාගමනය හොඳ නම්, ඔබ PHP-FPM සංචිත (හවුල් සත්කාරක) විශාල සංඛ්‍යාවක් සහිත සේවාදායකයක සත්කාරකත්වය නොදක්වයි.

නිගමනය

ඔබ PHP-FPM භාවිතා කරන්නේ නම් සහ ඔබේ ගමනාගමනය අධික නම්, ක්‍රියාවලි කළමනාකරුවන් ඉල්ලුම මත и ගතිකය PHP-FPM සඳහා ඒවායේ ආවේණික පොදු කාර්ය හේතුවෙන් සීමිත ප්‍රතිදානයක් ඇත. ඔබගේ පද්ධතිය තේරුම් ගෙන උපරිම සේවාදායක ධාරිතාව අනුව PHP-FPM ක්‍රියාවලි වින්‍යාස කරන්න. පළමු කට්ටලය pm.max_ළමයින් උපරිම pm භාවිතය මත පදනම්ව ගතිකය හෝ ඉල්ලුම මත, පසුව මතකය සහ ප්‍රොසෙසරය අධික බරකින් තොරව ක්‍රියා කරන මට්ටමට මෙම අගය වැඩි කරන්න. සමඟ ඔබ එය දකිනු ඇත pm ස්ථිතික, ඔබ සතුව සෑම දෙයක්ම මතකයේ ඇති බැවින්, ගමනාගමන කරල් නිසා කාලයත් සමඟ CPU කරල් අඩු වනු ඇති අතර, සේවාදායකයේ සහ CPU පැටවීමේ සාමාන්‍යය සමතලා වනු ඇත. සාමාන්‍ය PHP-FPM ක්‍රියාවලි ප්‍රමාණය වෙබ් සේවාදායකය මත රඳා පවතින අතර අතින් වින්‍යාස කිරීම අවශ්‍ය වේ, එබැවින් වැඩි ස්වයංක්‍රීය ක්‍රියාවලි කළමනාකරුවන් වේ ගතිකය и ඉල්ලුම මත - වඩාත් ජනප්රිය. ලිපිය ප්රයෝජනවත් වූ බව මම බලාපොරොත්තු වෙමි.

DUP මිණුම් සලකුණු ප්‍රස්ථාරය එක් කරන ලදී ab. PHP-FPM ක්‍රියාවලි මතකයේ තිබේ නම්, ඔවුන් වාඩි වී බලා සිටින ස්ථානයේ මතක පරිභෝජනයේ වියදමින් කාර්ය සාධනය වැඩි වේ. ඔබටම හොඳම විකල්පය සොයා ගන්න.

PHP-FPM සැකසුම: උපරිම කාර්ය සාධනය සඳහා pm ස්ථිතික භාවිතා කරන්න

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න