এনজিআইএনএক্স ক্যাশে মোছা ত্রুটি লগে সমালোচনামূলক আনলিঙ্ক ত্রুটি রাখে
প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১১:২৫:২৪ AM UTC
এই নিবন্ধটি ব্যাখ্যা করে যে কীভাবে আপনার লগ ফাইলগুলি ত্রুটি বার্তাগুলির সাথে বিশৃঙ্খলা ছাড়াই এনজিআইএনএক্সের ক্যাশে থেকে আইটেমগুলি মুছতে হয়। সাধারণত প্রস্তাবিত পদ্ধতির না হলেও এটি কিছু প্রান্তের ক্ষেত্রে কার্যকর হতে পারে।
Deleting NGINX Cache Puts Critical Unlink Errors in Error Log
এই পোস্টের তথ্যটি উবুন্টু সার্ভার 14.04 এক্স 64 এ চলমান এনজিআইএনএক্স 1.4.6 এ ফাস্টসিজিআই ক্যাশিংয়ের উপর ভিত্তি করে। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে বা নাও হতে পারে।
(আপডেট 2025: আমি মূল পোস্টটি লিখেছি এবং এখন এর মধ্যে অনেক কিছু পরিবর্তন হয়েছে। সার্ভারগুলি দ্রুত এবং সস্তা, তাই আমি আসলে এই পোস্টে বর্ণিত পদ্ধতির সুপারিশ করব না যেখানে আমি গতিশীল সামগ্রীর কয়েকটি অতিরিক্ত প্রজন্মকে সংরক্ষণ করার জন্য ক্যাশে মেয়াদোত্তীর্ণ মাইক্রো-পরিচালনা করার চেষ্টা করি। আমি ভবিষ্যতের রেফারেন্সের জন্য সামগ্রীটি এখানে রেখে দেব এবং যদি কারও আসলে কোনও কারণে এটির প্রয়োজন হয়। আমি নিশ্চিত করি নি যে এটি এখনও এনজিআইএনএক্সের বর্তমান সংস্করণগুলির জন্য কাজ করে, তবে আমি মনে করি এটি করে)।
অ্যাপাচি থেকে এনজিআইএনএক্সে বেশ কয়েকটি সাইট স্থানান্তরিত করার পরে আমি এর অন্তর্নির্মিত ক্যাশিং ক্ষমতাগুলির খুব পছন্দ করেছি, যা আমার কাছ থেকে খুব বেশি হস্তক্ষেপ না করে বেশিরভাগ পরিস্থিতিতে অত্যন্ত ভাল কাজ করে।
যাইহোক, সাইটগুলির মধ্যে একটির জন্য, আমার সত্যিই ক্যাশে সাফ করার ক্ষমতা প্রয়োজন (উভয়ই সম্পূর্ণরূপে এবং পৃথক এন্ট্রিগুলি সরিয়ে ফেলা) নিজেই। এনজিআইএনএক্সের ফ্রি সম্প্রদায় সংস্করণ কেবল সময়-ভিত্তিক ক্যাশের মেয়াদ শেষ হওয়া সমর্থন করে (যেমন এক ঘন্টা, একদিন ইত্যাদির পরে কিছু পরিবর্তন হয়েছে কিনা তা পরীক্ষা করতে আপনি এটি সেট আপ করতে পারেন)। কিন্তু যদি সময়ের আগে নির্ধারণ করার কোনও নির্ভরযোগ্য উপায় না থাকে যে কখন একটি নির্দিষ্ট সংস্থান পরিবর্তিত হবে? উদাহরণস্বরূপ, আমি ফিরে আসার আগে এবং এই পোস্টে কিছু সম্পাদনা করার আগে এটি এক ঘন্টা, এক দিন বা এক বছর হবে কিনা তা আমার কোনও ধারণা নেই - এবং কেন কেবল এক ঘন্টার জন্য ক্যাশে করা উচিত যদি একদিনের জন্য ক্যাশিং করা ঠিক হত?
এখানেই ম্যানুয়ালি ক্যাশে সাফ করার ক্ষমতা (বা আপনার ওয়েব অ্যাপ্লিকেশনটি এনজিআইএনএক্সকে অবহিত করে যে কিছু শুদ্ধ করা উচিত) প্রয়োজন। এনজিআইএনএক্সের পিছনে থাকা লোকেরা এটির প্রয়োজনীয়তা সম্পর্কে স্পষ্টভাবে সচেতন কারণ বৈশিষ্ট্যটি তাদের পণ্যের প্রদত্ত সংস্করণে সমর্থিত - তবে তারা অবশ্যই তাদের লাইসেন্সিং যেভাবে চান তা সেট আপ করার অধিকারী, দামটি আমার জন্য কিছুটা খাড়া যখন এই ফাংশনটি একমাত্র প্রদত্ত বৈশিষ্ট্য যা আমার সত্যিই প্রয়োজন।
ভাগ্যক্রমে, দেখা যাচ্ছে যে আপনি কেবল ক্যাশে ডিরেক্টরি থেকে ফাইলগুলি নিজেই মুছতে পারেন এবং এনজিআইএনএক্স এটি বাছাই করবে এবং কোনও বাধা ছাড়াই আপনার ব্যাক-এন্ড থেকে একটি নতুন অনুলিপি আনবে। তবে, আপনি যদি নিজের কনফিগারেশনটি টুইট না করে এটি করেন তবে আপনি কিছুক্ষণ পরে আপনার ত্রুটি লগে এটির মতো পুরো গুচ্ছ বার্তা দেখতে পাবেন:
এটি প্রদর্শিত হয় যে এই ত্রুটিগুলি ঘটে যখন এনজিআইএনএক্স নিজেই fastcgi_cache_path নির্দেশের নিষ্ক্রিয় প্যারামিটার দ্বারা নির্দিষ্ট সময়ের পরে ক্যাশে এন্ট্রিগুলি মুছে ফেলার চেষ্টা করে। এর জন্য ডিফল্টটি কেবল 10 মিনিট, তবে আপনি এটি যে কোনও মানতে সেট করতে পারেন। আপনি যদি এটি 10 বছরে সেট করেন তবে সম্ভবত আপনি এর মধ্যে সার্ভারটি পুনরায় চালু করেননি তাই মেমরির মূল সূচকটি ইতিমধ্যে সাফ হয়ে গেছে। আপনি যদি এটি করেন তবে আপনাকে কি নিশ্চিত করতে হবে যে আপনি নিজেই ক্যাশে সাফ করেছেন, এনজিআইএনএক্স আর আপনার জন্য এটি করবে না।
আমি এটি সত্যিই অদ্ভুত মনে করি যে এটি একটি সমালোচনামূলক ত্রুটি হিসাবে বিবেচিত হয় যে একটি ক্যাশে এন্ট্রি মুছে ফেলা যায় না কারণ এটি বিদ্যমান নয়। এর তীব্রতা শ্রেণিবিন্যাস এত বেশি হওয়ার অর্থ হ'ল একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে লগ এন্ট্রিগুলি উপেক্ষা করে পরিত্রাণ পাওয়া অসম্ভব। যত তাড়াতাড়ি ব্যাক-এন্ড থেকে একটি নতুন অনুলিপি আনা হবে এন্ট্রি আবার বিদ্যমান হবে, তাই এটি আমার মতে সর্বাধিক একটি সতর্কতা হওয়া উচিত।
এখন, যদি অনুমতি বা তৃতীয় কোনও কিছুর সমস্যার কারণে ক্যাশে এন্ট্রিটি মুছে ফেলা না যায় তবে এটি একটি গুরুতর ত্রুটি হবে, কারণ এটি এনজিআইএনএক্সকে তার মেয়াদ শেষ হওয়ার পরে দীর্ঘ ক্যাশেড সামগ্রী পরিবেশন করতে পারে, তবে ক্লিন-আপ প্রক্রিয়াটি এই পার্থক্যটি তৈরি করে বলে মনে হয় না।