मेरे पास एक वेब सर्वर है जो कैश फ़ाइलों को बचाता है और उन्हें 7 दिनों तक रखता है। फ़ाइल नाम लंबे md5 हैश, अर्थात वास्तव में 32 हेक्स चरित्र, और एक वृक्ष संरचना है कि इस तरह दिखता है में रखा जा रहा है:बहुत सारी अस्थायी छोटी फ़ाइलों को संभालना
00/
00/
00000ae9355e59a3d8a314a5470753d8
.
.
00/
01/
आप अंदाजा हो।
मेरी समस्या यह है कि पुरानी फाइलों को हटाने में वास्तव में काफी समय लग रहा है। मेरे पास दैनिक क्रॉन जॉब है जो
find cache/ -mtime +7 -type f -delete
जो पूरा करने के लिए आधा दिन से अधिक समय लेता है। मैं स्केलेबिलिटी और सर्वर के प्रदर्शन पर असर के बारे में चिंता करता हूं। इसके अतिरिक्त, कैश निर्देशिका अब मेरे सिस्टम में एक ब्लैक होल है, कभी-कभी निर्दोष du
या find
को फँसाना।
एलआरयू कैश का मानक समाधान कुछ प्रकार का ढेर है। क्या फाइल सिस्टम स्तर पर इसे स्केल करने का कोई तरीका है? क्या इसे इस तरह कार्यान्वित करने का कोई और तरीका है जिससे इसे प्रबंधित करना आसान हो जाता है?
- 7 शीर्ष निर्देशिका, प्रत्येक सप्ताह दिन के लिए एक, और खाली एक निर्देशिका हर दिन बनाएँ:
यहाँ विचारों मैं माना जाता है। यह कैश फ़ाइल 7-गुना के लिए खोज समय बढ़ाता है, जब फ़ाइल ओवरराइट की जाती है तो यह वास्तव में जटिल होती है, और मुझे यकीन नहीं है कि यह हटाने के समय के साथ क्या करेगा।
- फ़ाइलों को नाम और दिनांक पर इंडेक्स के साथ एक MySQL तालिका में ब्लॉब्स के रूप में सहेजें। यह आशाजनक लग रहा था, लेकिन व्यावहारिक रूप से यह हमेशा एफएस से धीमा रहा है। शायद मैं इसे सही नहीं कर रहा हूँ।
कोई विचार?
बगजर :) आपने मुझे इसे हराया। इस जवाब को +1 करें। –
बस मूल फ़ाइल और लिंक दोनों को हटाना सुनिश्चित करें। आप वहां बहुत से मृत लिंक नहीं चाहते हैं, और लिंक को हटाने और मूल फ़ाइल को हटाने के लिए भी आसान है। –