ലിനക്സിൽ വളരെയധികം റാം ഉപയോഗിക്കുന്നതിൽ നിന്ന് PHP-FPM എങ്ങനെ തടയാം


നിങ്ങൾ ഒരു LEMP (Linux, NGINX, MySQL/MariaDB, കൂടാതെ PHP) സ്റ്റാക്ക് വിന്യസിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങൾ PHP പ്രോസസ്സിംഗിനായി NGINX-നുള്ളിൽ (ഒരു HTTP സെർവറായി) FastCGI പ്രോക്uസിംഗാണ് ഉപയോഗിക്കുന്നത്. PHP-FPM (FastCGI പ്രോസസ്സ് മാനേജറിന്റെ ചുരുക്കെഴുത്ത്) വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നതും ഉയർന്ന പ്രകടനമുള്ളതുമായ PHP FastCGI നടപ്പിലാക്കലാണ്.

ലിനക്സിൽ LEMP സ്റ്റാക്ക് സജ്ജീകരിക്കുന്നതിനുള്ള ഉപയോഗപ്രദമായ ഗൈഡുകൾ ഇതാ.

  • ഉബുണ്ടു 20.04-ൽ PhpMyAdmin ഉപയോഗിച്ച് LEMP സ്റ്റാക്ക് എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • CentOS 8-ൽ LEMP സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • ഡെബിയൻ 10 സെർവറിൽ LEMP എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

അടുത്തിടെ, ഞങ്ങളുടെ LEMP വെബ് സെർവറുകളിൽ ഒന്നിലെ എല്ലാ PHP വെബ്uസൈറ്റുകളും മന്ദഗതിയിലാവുകയും ഒടുവിൽ സെർവറിൽ ലോഗിൻ ചെയ്യുമ്പോൾ പ്രതികരിക്കുന്നത് നിർത്തുകയും ചെയ്തു. സിസ്റ്റത്തിൽ റാം കുറവാണെന്ന് ഞങ്ങൾ കണ്ടെത്തി: ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ടിൽ സൂചിപ്പിച്ചിരിക്കുന്നതുപോലെ PHP-FPM റാമിന്റെ ഭൂരിഭാഗവും ഉപയോഗിച്ചിരുന്നു (കാഴ്ചകൾ - സിസ്റ്റം മോണിറ്ററിംഗ് ടൂൾ).

$ glances

ഈ ലേഖനത്തിൽ, ലിനക്സിൽ പിഎച്ച്പി-എഫ്പിഎം വളരെയധികം അല്ലെങ്കിൽ നിങ്ങളുടെ മുഴുവൻ സിസ്റ്റം മെമ്മറി (റാം) ഉപയോഗിക്കുന്നതിൽ നിന്നും എങ്ങനെ തടയാമെന്ന് ഞങ്ങൾ കാണിക്കും. ഈ ഗൈഡിന്റെ അവസാനം, PHP-FPM മെമ്മറി ഉപഭോഗം 50% അല്ലെങ്കിൽ അതിൽ കൂടുതൽ കുറയ്ക്കുന്നത് എങ്ങനെയെന്ന് നിങ്ങൾ പഠിക്കും.

PHP-FPM മെമ്മറി ഉപയോഗം കുറയ്ക്കുക

ഇൻറർനെറ്റിൽ കുറച്ച് ഗവേഷണം നടത്തിയതിന് ശേഷം, പൂൾ കോൺഫിഗറേഷൻ ഫയലിലെ PHP-FPM-ന്റെ മെമ്മറി ഉപഭോഗം കുറയ്ക്കുന്നതിന് PHP-FPM പ്രോസസ്സ് മാനേജറും അതിന്റെ ചില വശങ്ങളും വീണ്ടും ക്രമീകരിക്കേണ്ടതുണ്ടെന്ന് ഞങ്ങൾ കണ്ടെത്തി.

സ്ഥിരസ്ഥിതി പൂൾ 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 ഉൾപ്പെടെയുള്ള മറ്റ് ചില നിർദ്ദേശങ്ങളെ ആശ്രയിച്ച് കുട്ടികളുടെ എണ്ണം (ചൈൽഡ് പ്രോസസ്സുകൾ) ചലനാത്മകമായി സജ്ജീകരിച്ചിരിക്കുന്നു.

സ്റ്റാർട്ടപ്പിൽ ചൈൽഡ് പ്രോസസുകളൊന്നും സൃഷ്ടിക്കപ്പെടാത്തതും എന്നാൽ ആവശ്യാനുസരണം സൃഷ്ടിക്കപ്പെടുന്നതുമായ ഓൺഡിമാൻഡ് സ്കീമാണ് ഏറ്റവും അനുയോജ്യമായ പ്രോസസ് മാനേജർ. pm.max_children, pm.process_idle_timeout എന്നിവയെ അടിസ്ഥാനമാക്കി പുതിയ അഭ്യർത്ഥനകൾ കണക്uറ്റ് ചെയ്യുമ്പോൾ മാത്രമേ ചൈൽഡ് പ്രോസസ്സുകൾ ഫോർക്ക് ചെയ്യപ്പെടുകയുള്ളൂ, ഇത് ഒരു നിഷ്uക്രിയ പ്രക്രിയ ഇല്ലാതാക്കപ്പെടുന്ന സെക്കൻഡുകളുടെ എണ്ണം നിർവചിക്കുന്നു.

അവസാനമായി പക്ഷേ, നമ്മൾ pm.max_requests പാരാമീറ്റർ സജ്ജീകരിക്കേണ്ടതുണ്ട്, അത് ഓരോ ചൈൽഡ് പ്രോസസ്സും റീ-സ്പോണിംഗിന് മുമ്പ് നടപ്പിലാക്കേണ്ട അഭ്യർത്ഥനകളുടെ എണ്ണം നിർവചിക്കുന്നു. മൂന്നാം കക്ഷി ലൈബ്രറികളിലെ മെമ്മറി ലീക്കുകൾക്കുള്ള പരിഹാരമായും ഈ പരാമീറ്റർ ഉപയോഗിക്കാമെന്നത് ശ്രദ്ധിക്കുക.

റഫറൻസ്: PHP-FPM പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള മികച്ച മാർഗം.

മുകളിലുള്ള ഈ കോൺഫിഗറേഷനുകൾ നടത്തിയ ശേഷം, ഞങ്ങളുടെ സെർവറിൽ റാം ഉപയോഗം ഇപ്പോൾ മികച്ചതാണെന്ന് ഞാൻ ശ്രദ്ധിച്ചു. ഈ വിഷയവുമായോ ചോദ്യങ്ങളുമായി ബന്ധപ്പെട്ട് നിങ്ങൾക്ക് എന്തെങ്കിലും ചിന്തകൾ പങ്കിടാനുണ്ടോ? ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി ഞങ്ങളെ ബന്ധപ്പെടുക.