NGINX Cache ഇല്ലാതാക്കുന്നത് പിശക് ലോഗിൽ ഗുരുതരമായ അൺലിങ്ക് പിശകുകൾ വരുത്തുന്നു
പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 15 11:27:04 AM UTC
നിങ്ങളുടെ ലോഗ് ഫയലുകൾ പിശക് സന്ദേശങ്ങളാൽ അലങ്കോലപ്പെടാതെ NGINX-ന്റെ കാഷെയിൽ നിന്ന് ഇനങ്ങൾ എങ്ങനെ ഇല്ലാതാക്കാമെന്ന് ഈ ലേഖനം വിശദീകരിക്കുന്നു. പൊതുവെ ശുപാർശ ചെയ്യപ്പെടുന്ന സമീപനമല്ലെങ്കിലും, ചില എഡ്ജ് സന്ദർഭങ്ങളിൽ ഇത് ഉപയോഗപ്രദമായേക്കാം.
Deleting NGINX Cache Puts Critical Unlink Errors in Error Log
ഈ പോസ്റ്റിലെ വിവരങ്ങൾ ഉബുണ്ടു സെർവർ 14.04 x64 ൽ പ്രവർത്തിക്കുന്ന NGINX 1.4.6 ലെ FastCGI കച്ചിംഗ് അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഇത് മറ്റ് പതിപ്പുകൾക്ക് സാധുതയുള്ളതോ അല്ലാത്തതോ ആകാം.
(അപ്ഡേറ്റ് 2025: ഞാൻ യഥാർത്ഥ പോസ്റ്റ് എഴുതിയതിനും ഇപ്പോൾ ഇടയ്ക്ക്, ഒരുപാട് മാറിയിട്ടുണ്ട്. സെർവറുകൾ വേഗതയേറിയതും വിലകുറഞ്ഞതുമാണ്, അതിനാൽ ഈ പോസ്റ്റിൽ വിവരിച്ചിരിക്കുന്ന സമീപനം ഞാൻ ശുപാർശ ചെയ്യുന്നില്ല, അവിടെ കുറച്ച് അധിക തലമുറ ഡൈനാമിക് ഉള്ളടക്കം ലാഭിക്കാൻ ഞാൻ കാഷ് എക്സ്പയറി മൈക്രോ-മാനേജുചെയ്യാൻ ശ്രമിക്കുന്നു. ഭാവി റഫറൻസിനായി ഞാൻ ഉള്ളടക്കം ഇവിടെ ഉപേക്ഷിക്കും, ആർക്കെങ്കിലും എന്തെങ്കിലും കാരണത്താൽ ഇത് ആവശ്യമാണെങ്കിൽ. ഇത് ഇപ്പോഴും NGINX-ന്റെ നിലവിലെ പതിപ്പുകൾക്ക് പ്രവർത്തിക്കുന്നുവെന്ന് ഞാൻ സ്ഥിരീകരിച്ചിട്ടില്ല, പക്ഷേ ഇത് ഉണ്ടെന്ന് ഞാൻ കരുതുന്നു).
അപ്പാച്ചെയിൽ നിന്ന് എൻജിഐഎൻഎക്സിലേക്ക് നിരവധി സൈറ്റുകൾ കുടിയേറിയ ശേഷം ഞാൻ അതിന്റെ ബിൽറ്റ്-ഇൻ കാച്ചിംഗ് കഴിവുകൾ വളരെ ഇഷ്ടപ്പെട്ടു, ഇത് മിക്ക സാഹചര്യങ്ങളിലും എന്നിൽ നിന്ന് കൂടുതൽ ഇടപെടാതെ വളരെ നന്നായി പ്രവർത്തിക്കുന്നു.
എന്നിരുന്നാലും, ഒരു സൈറ്റിനായി, എനിക്ക് കാഷ് (പൂർണ്ണമായും വ്യക്തിഗത എൻട്രികൾ നീക്കംചെയ്യാനും) സ്വയം നീക്കം ചെയ്യാനുള്ള കഴിവ് ആവശ്യമായിരുന്നു. NGINX-ന്റെ സൗജന്യ കമ്മ്യൂണിറ്റി പതിപ്പ് സമയം അടിസ്ഥാനമാക്കിയുള്ള കാഷ് കാലഹരണത്തെ മാത്രമേ പിന്തുണയ്ക്കുന്നുള്ളൂ (അതായത്, ഒരു മണിക്കൂർ, ഒരു ദിവസം മുതലായവയ്ക്ക് ശേഷം എന്തെങ്കിലും മാറിയിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ നിങ്ങൾക്ക് ഇത് സജ്ജീകരിക്കാൻ കഴിയും). എന്നാൽ ഒരു പ്രത്യേക വിഭവം എപ്പോൾ മാറുമെന്ന് മുൻകൂട്ടി നിർണ്ണയിക്കാൻ വിശ്വസനീയമായ മാർഗമില്ലെങ്കിൽ എന്തുചെയ്യും? ഉദാഹരണത്തിന്, ഞാൻ ഈ പോസ്റ്റിൽ വന്ന് എന്തെങ്കിലും എഡിറ്റുചെയ്യുന്നതിന് ഒരു മണിക്കൂറോ ഒരു ദിവസമോ ഒരു വർഷമോ എടുക്കുമോ എന്ന് എനിക്കറിയില്ല - ഒരു ദിവസം കാച്ചിംഗ് ചെയ്യുന്നത് നല്ലതാണെങ്കിൽ എന്തുകൊണ്ട് ഒരു മണിക്കൂർ മാത്രം കാഷ് ചെയ്യുക?
ഇവിടെയാണ് കാഷ് സ്വമേധയാ നീക്കം ചെയ്യാനുള്ള കഴിവ് (അല്ലെങ്കിൽ എന്തെങ്കിലും ശുദ്ധീകരിക്കണമെന്ന് നിങ്ങളുടെ വെബ് ആപ്ലിക്കേഷൻ എൻജിഐഎൻഎക്സിനെ അറിയിക്കുന്നതിലൂടെ) ആവശ്യമാണ്. അവരുടെ ഉൽപ്പന്നത്തിന്റെ പെയ്ഡ് പതിപ്പിൽ ഫീച്ചർ പിന്തുണയ്ക്കുന്നതിനാൽ ഇതിന്റെ ആവശ്യകതയെക്കുറിച്ച് എൻജിഐഎൻഎക്സിന് പിന്നിലുള്ള ആളുകൾക്ക് വ്യക്തമായി അറിയാം - പക്ഷേ അവർക്ക് തീർച്ചയായും അവരുടെ ലൈസൻസിംഗ് എങ്ങനെ വേണമെങ്കിലും സജ്ജീകരിക്കാൻ അവകാശമുണ്ടെങ്കിലും, ഈ ഫംഗ്ഷൻ എനിക്ക് ശരിക്കും ആവശ്യമുള്ള ഒരേയൊരു പെയ്ഡ് ഫീച്ചർ ആയിരിക്കുമ്പോൾ വില എന്നെ സംബന്ധിച്ചിടത്തോളം അൽപ്പം കുത്തനെയാണ്.
ഭാഗ്യവശാൽ, നിങ്ങൾക്ക് കാഷ് ഡയറക്ടറിയിൽ നിന്ന് ഫയലുകൾ സ്വയം ഇല്ലാതാക്കാൻ കഴിയും, കൂടാതെ NGINX ഇത് എടുത്ത് നിങ്ങളുടെ ബാക്ക് എൻഡിൽ നിന്ന് ഒരു പുതിയ പകർപ്പ് ഒരു തടസ്സവുമില്ലാതെ കൊണ്ടുവരും. എന്നിരുന്നാലും, നിങ്ങളുടെ കോൺഫിഗറേഷനിൽ മാറ്റം വരുത്താതെ നിങ്ങൾ ഇത് ചെയ്യുകയാണെങ്കിൽ, കുറച്ച് സമയത്തിന് ശേഷം നിങ്ങളുടെ പിശക് ലോഗിൽ ഇതിന് സമാനമായ ഒരു കൂട്ടം സന്ദേശങ്ങൾ നിങ്ങൾ കാണാൻ സാധ്യതയുണ്ട്:
fastcgi_cache_path നിർദ്ദേശത്തിന്റെ നിഷ്ക്രിയ പാരാമീറ്ററിൽ വ്യക്തമാക്കിയ സമയത്തിന് ശേഷം എൻജിഐഎൻഎക്സ് തന്നെ കാഷ് എൻട്രികൾ ഇല്ലാതാക്കാൻ ശ്രമിക്കുമ്പോഴാണ് ഈ പിശകുകൾ സംഭവിക്കുന്നതെന്ന് തോന്നുന്നു. ഇതിനുള്ള ഡിഫോൾട്ട് 10 മിനിറ്റ് മാത്രമാണ്, പക്ഷേ നിങ്ങൾക്ക് ആവശ്യമുള്ള മൂല്യത്തിലേക്ക് ഇത് സജ്ജമാക്കാൻ കഴിയും. നിങ്ങൾ ഇത് 10 വർഷമായി ക്രമീകരിക്കുകയാണെങ്കിൽ, ഇതിനിടയിൽ നിങ്ങൾ സെർവർ പുനരാരംഭിച്ചിട്ടില്ലായിരിക്കാം, അതിനാൽ മെമ്മറിയിലെ പ്രധാന സൂചിക ഇതിനിടയിൽ ക്ലിയർ ചെയ്യപ്പെടുമായിരുന്നു. നിങ്ങൾ ഇത് ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾ സ്വയം കാഷെ ക്ലിയർ ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കേണ്ടതുണ്ടോ, NGINX ഇനി നിങ്ങൾക്കായി ഇത് ചെയ്യില്ല.
ഒരു കാഷ് എൻട്രി നിലവിലില്ലാത്തതിനാൽ അത് ഇല്ലാതാക്കാൻ കഴിയാത്തത് ഒരു നിർണായക പിശകായി കണക്കാക്കുന്നത് എനിക്ക് വളരെ വിചിത്രമായി തോന്നുന്നു. അതിന്റെ തീവ്രത വർഗ്ഗീകരണം വളരെ ഉയർന്നതാണ് എന്ന വസ്തുത അർത്ഥമാക്കുന്നത് ഒരു നിശ്ചിത പരിധിക്ക് താഴെയുള്ള ലോഗ് എൻട്രികൾ അവഗണിക്കുന്നതിലൂടെ ഒഴിവാക്കുന്നത് അസാധ്യമാണ് എന്നാണ്. പിൻവശത്ത് നിന്ന് ഒരു പുതിയ പകർപ്പ് ലഭിച്ചാലുടൻ എൻട്രി വീണ്ടും നിലനിൽക്കും, അതിനാൽ ഇത് എന്റെ അഭിപ്രായത്തിൽ ഒരു മുന്നറിയിപ്പായിരിക്കണം.
ഇപ്പോൾ, അനുമതികളിലെ പ്രശ്നങ്ങളോ മൂന്നാമത്തേതോ കാരണം കാഷ് എൻട്രി ഇല്ലാതാക്കാൻ കഴിയുന്നില്ലെങ്കിൽ, അത് ഒരു നിർണായക പിശകായിരിക്കും, കാരണം എൻജിഐഎൻഎക്സ് അതിന്റെ കാലഹരണപ്പെടുന്ന സമയത്തിന് ശേഷവും കാഷ് ചെയ്ത ഉള്ളടക്കം നൽകുന്നത് തുടരാൻ ഇത് പ്രേരിപ്പിച്ചേക്കാം, പക്ഷേ ക്ലീൻ-അപ്പ് പ്രക്രിയ ഈ വ്യത്യാസം കാണിക്കുന്നതായി തോന്നുന്നില്ല.