2012-05-19 15 views
6

मेरे पास एक ऐप है जिसमें एक खोज सुविधा है। यह सुविधा खोज शब्द को एक विशाल वस्तु (शब्दकोश) में देखती है जिसे मैं 24 घंटों तक कैश करता हूं। वस्तु लगभग 50,000 कुंजी है और वजन लगभग 10 एमबी है।कैशिंग मेमोरी खपत को कैसे प्रभावित करता है?

जब मैं अपनी होस्टिंग पर मेमोरी उपयोग प्रोफ़ाइल करता हूं, तो मुझे लगता है कि कुछ प्रश्नों के बाद, स्मृति उपयोग लगभग 50 एमबी से 450 एमबी तक चला जाता है, जिससे मेरे होस्टिंग प्रदाता को ऐप को मारने के लिए प्रेरित किया जाता है।

तो मुझे आश्चर्य है कि यहां क्या हो रहा है। विशेष रूप से, कैश प्रत्येक अनुरोध पर स्मृति का उपयोग कैसे करता है और इसे ठीक करने के लिए मैं क्या कर सकता हूं?

+0

आप किस कैशिंग तकनीक का उपयोग कर रहे हैं? Memcached? – Lycha

+0

फिलहाल, मैं 'FileBasedCache' –

+1

का उपयोग कर रहा हूं फ़ाइल कैश मेमोरी रिसाव का कारण नहीं बनता है। क्या आपके प्रोजेक्ट में अन्य स्थान हैं जहां आप स्थानीय स्मृति में क्वेरीसेट या ऑब्जेक्ट्स स्टोर करते हैं? I.e [contenttype प्रबंधक करता है] (https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#the-contenttypemanager) – San4ez

उत्तर

1

Django FileBasedCache प्रदर्शन समस्याओं के लिए जाना जाता है। आप नीचे दिए गए लिंक पर बड़ा चित्र प्राप्त कर सकते हैं:

A smarter filebasedcache for Django

Bug: File based cache not very efficient with large amounts of cached files

बग के रूप में स्थापित किया गया था अभ्यस्त बहस को ठीक:

मैं wontfix लिए जा रहा हूँ, पर फाइल सिस्टम कैश का आधार कैशिंग का परीक्षण करने का एक आसान तरीका है, गंभीर कैशिंग रणनीति के रूप में नहीं। द्वारा लागू डिफ़ॉल्ट कैश आकार और कूल रणनीति फ़ाइल कैश को यह स्पष्ट करना चाहिए।

+0

मैं आपके उदाहरणों में वर्णित वस्तुओं का एक गुच्छा कैश नहीं करता हूं। मेरे पास चाबियाँ हैं। मुझे नहीं लगता कि आपका उदाहरण लागू होता है। साथ ही, प्रत्येक क्वेरी के बाद मेमोरी उपयोग बढ़ जाता है - यह कुछ बिंदु पर पठार, लेकिन फिर मेरा होस्टिंग प्रदाता ऐप को मार देता है। –

0

एक कैशिंग रणनीति है क्योंकि वे दोनों समर्थन समाप्ति के रूप में Memcache या Redis की तरह एक केन्द्रीय विद्यालय संगठन के उपयोग पर विचार। साथ ही, ElasticSearch जैसे समर्पित खोज पर विचार करें यदि अधिक अनुमानित सुविधाएं खोज-संबंधित होंगी।

उपकरण howtos उपलब्ध हैं:

Installing memcached for a django project

http://code.google.com/p/memcached/wiki/NewStart

http://redis.io/commands/expire

https://github.com/bartTC/django-memcache-status

http://www.elasticsearch.org/guide/reference/index-modules/cache.html

संबंधित मुद्दे