एनजीआयएनएक्स कॅशे डिलीट केल्याने त्रुटी लॉगमध्ये गंभीर अनलिंक त्रुटी राहतात
प्रकाशित: १५ फेब्रुवारी, २०२५ रोजी ११:२५:२७ AM UTC
हा लेख स्पष्ट करतो की आपल्या लॉग फाइल्स त्रुटी संदेशांनी गोंधळल्याशिवाय एनजीआयएनएक्सच्या कॅशेमधून आयटम कसे हटवावे. सामान्यत: शिफारस केलेला दृष्टीकोन नसला तरी, काही धार प्रकरणांमध्ये हे उपयुक्त ठरू शकते.
Deleting NGINX Cache Puts Critical Unlink Errors in Error Log
या पोस्टमधील माहिती उबंटू सर्व्हर 14.04 x 64 वर चालणार् या एनजीआयएनएक्स 1.4.6 वरील फास्टसीजीआय कॅशिंगवर आधारित आहे. हे इतर आवृत्त्यांसाठी वैध असू शकते किंवा असू शकत नाही.
(अपडेट २०२५: मी मूळ पोस्ट लिहिली आणि आताच्या काळात बरेच काही बदलले आहे. सर्व्हर वेगवान आणि स्वस्त आहेत, म्हणून मी खरं तर या पोस्टमध्ये वर्णन केलेल्या दृष्टीकोनाची शिफारस करणार नाही जिथे मी डायनॅमिक सामग्रीच्या काही अतिरिक्त पिढ्या वाचविण्यासाठी कॅश एक्सपायरी मायक्रो-मॅनेज करण्याचा प्रयत्न करतो. भविष्यातील संदर्भासाठी आणि जर कोणाला खरोखरच कोणत्याही कारणास्तव त्याची आवश्यकता असेल तर मी सामग्री येथे सोडून देईन. मी पुष्टी केलेली नाही की हे अद्याप एनजीआयएनएक्सच्या सध्याच्या आवृत्त्यांसाठी कार्य करते, परंतु मला असे वाटते की ते करते).
अपाचे पासून एनजीआयएनएक्समध्ये अनेक साइट्स स्थलांतरित केल्यानंतर मला त्याच्या बिल्ट-इन कॅचिंग क्षमतेची खूप आवड वाढली आहे, जी माझ्याकडून फारसा हस्तक्षेप न करता बहुतेक परिस्थितीत अत्यंत चांगले कार्य करते.
तथापि, एका साइटसाठी, मला खरोखर कॅश साफ करण्याची क्षमता (पूर्णपणे आणि वैयक्तिक नोंदी काढून टाकणे) आवश्यक होती. एनजीआयएनएक्सची विनामूल्य सामुदायिक आवृत्ती केवळ वेळ-आधारित कॅश एक्सपायरीचे समर्थन करते (म्हणजे एक तास, एक दिवस इ. नंतर काही बदलले आहे की नाही हे तपासण्यासाठी आपण ते सेट करू शकता). परंतु एखादे विशिष्ट संसाधन कधी बदलेल हे वेळेपूर्वी ठरविण्याचा विश्वासार्ह मार्ग नसेल तर? उदाहरणार्थ, मला कल्पना नाही की मी परत येऊन या पोस्टमध्ये काही तरी संपादित करण्यापूर्वी एक तास, एक दिवस किंवा एक वर्ष असेल - आणि जर एक दिवस कॅचिंग ठीक झाले असते तर फक्त एक तास कॅश कशासाठी?
येथेच कॅश मॅन्युअली साफ करण्याची क्षमता (किंवा आपल्या वेब अनुप्रयोगाने एनजीआयएनएक्सला सूचित करून की काहीतरी काढून टाकले पाहिजे) आवश्यक आहे. एनजीआयएनएक्सच्या मागच्या लोकांना याची आवश्यकता स्पष्टपणे माहित आहे कारण हे वैशिष्ट्य त्यांच्या उत्पादनाच्या सशुल्क आवृत्तीमध्ये समर्थित आहे - परंतु ते निश्चितपणे त्यांना हव्या त्या मार्गाने आपला परवाना सेट करण्याचा अधिकार आहेत, परंतु जेव्हा हे फंक्शन मला खरोखर आवश्यक असलेले एकमेव सशुल्क वैशिष्ट्य आहे तेव्हा किंमत माझ्यासाठी थोडी जास्त आहे.
सुदैवाने, असे दिसून आले आहे की आपण स्वत: कॅश डिरेक्टरीमधून फाइल्स हटवू शकता आणि एनजीआयएनएक्स हे उचलेल आणि कोणत्याही अडथळ्याशिवाय आपल्या बॅक-एंडमधून नवीन प्रत आणेल. तथापि, जर आपण आपल्या कॉन्फिगरेशनमध्ये बदल न करता हे केले तर आपल्याला काही काळानंतर आपल्या त्रुटी लॉगमध्ये यासारखेच संदेशांचा संपूर्ण समूह दिसण्याची शक्यता आहे:
असे दिसते की जेव्हा एनजीआयएनएक्स स्वत: fastcgi_cache_path निर्देशाच्या निष्क्रिय पॅरामीटरद्वारे निर्दिष्ट केलेल्या वेळेनंतर कॅश नोंदी हटविण्याचा प्रयत्न करते तेव्हा या त्रुटी उद्भवतात. यासाठी डिफॉल्ट फक्त 10 मिनिटांचा आहे, परंतु आपण ते आपल्याला हव्या त्या मूल्यावर सेट करू शकता. जर आपण ते 10 वर्षांसाठी सेट केले असेल तर कदाचित आपण मध्यंतरी सर्व्हर पुन्हा सुरू केला नसेल म्हणून मेमरीमधील मुख्य निर्देशांक मध्यंतरी साफ झाला असता. आपण हे केल्यास, आपण स्वत: कॅश साफ केल्याची खात्री करण्याची आवश्यकता आहे का, एनजीआयएनएक्स यापुढे आपल्यासाठी हे करणार नाही.
कॅश प्रविष्टि अस्तित्वात नसल्यामुळे ती हटवता येत नाही ही एक गंभीर त्रुटी मानली जाते हे मला खरोखर विचित्र वाटते. त्याचे तीव्रतेचे वर्गीकरण इतके जास्त आहे याचा अर्थ असा आहे की केवळ एका विशिष्ट मर्यादेपेक्षा कमी लॉग नोंदींकडे दुर्लक्ष करून सुटका करणे अशक्य आहे. बॅक-एंडवरून नवीन प्रत येताच पुन्हा एन्ट्री अस्तित्वात येईल, त्यामुळे माझ्या मते हा जास्तीत जास्त इशारा असावा.
आता, जर परवानग्यांच्या समस्येमुळे किंवा तिसर्या गोष्टीमुळे कॅश एन्ट्री हटविली जाऊ शकली नाही, तर ती एक गंभीर त्रुटी असेल, कारण यामुळे एनजीआयएनएक्स त्याच्या एक्सपायरी टाइमनंतर बराच काळ कॅशेड सामग्री सर्व्ह करणे सुरू ठेवू शकते, परंतु स्वच्छता प्रक्रियेमुळे हा फरक दिसून येत नाही.