मेमेकैड बनाम एपीसी जो मुझे चुनना चाहिए? [बन्द है]


161

मैं इस लेख को पढ़ता हूं: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ रास्ते से वापस कब .. मैं सबसे अच्छा कैशिंग इंजन प्राप्त करना चाहता हूं ताकि मेरा आवेदन वास्तव में तेज हो। बेशक मैं ओवर-कैश नहीं करना चाहता, लेकिन मैं कम से कम वहां से सबसे अच्छी चीज चुनना चाहता हूं। उस लेख में यह कहते हैं Memcached धीमी है और एपीसी तेजी से तो क्यों हर किसी को चुन रहा है है memcached ?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels यहाँ कहते हैं, "Apc, Memcache ... और a जैसे तेज़ (लेकिन सीमित) का उपयोग करें" फ़ाइल, सकलाइट ... "धीमी" एक जैसा है?


14
BTW: यदि आप उपयोग नहीं करते हैं तो भी आपको APC का उपयोग करना चाहिए apc_store। ओपकोड कैश अकेले PHP को कुछ गुना तेज बनाता है।
कोर्नेल

@ चोंचले: क्या मतलब? क्या एपीसी सिर्फ स्थापना के बाद पीएचपी की गति बढ़ाता है, भले ही मैं अपनी स्क्रिप्ट में कुछ भी कैश करने के लिए कोड नहीं जोड़ता हूं?
मार्को डेमायो

5
@ मार्को डेमायो: वास्तव में। APC मुख्य रूप से एक PHP ऑप्टिमाइज़र है (जब तक यह सक्षम है डिफ़ॉल्ट रूप से अनुकूलन करता है), और apc_store()उसके शीर्ष पर सिर्फ एक अतिरिक्त बोनस है।
कोर्नेल

3
2014 में, यदि आप केवल 1 सर्वर पर कैशिंग के लिए इसका उपयोग करते हैं, तो APCu के लिए जाएं।
फ्लेयन्स

जवाबों:


268

मेमकाट एक वितरित कैशिंग प्रणाली है, जबकि एपीसी गैर-वितरित है - और मुख्य रूप से एक ओपोड कैश है।

अगर (केवल और केवल यदि) आपके पास एक वेब एप्लिकेशन है जिसे विभिन्न वेबसर्वर्स (लोडबैलेंसिंग) पर रहना पड़ता है, तो आपको वितरित कैशिंग के लिए मेमचे का उपयोग करना होगा। यदि नहीं, तो बस एपीसी और उसके कैश से चिपके रहें।

आपको हमेशा एक opcode कैश का उपयोग करना चाहिए, जो APC है (APC भी php6 iirc में एकीकृत हो जाएगा, तो अब इसका उपयोग क्यों न शुरू करें)।

आप विभिन्न उद्देश्यों के लिए दोनों का उपयोग कर सकते हैं।


5
तेजस्वी उत्तर +1। मेरा सवाल अब opcodeकैश क्या है ?
मार्को डेमायो

4
@ कर्स्टन यदि आपके पास अलग-अलग सर्वर (जैसे क्लाउड लोडबेल्ड वातावरण) है, जब तक आपको उनके बीच राज्य को बनाए रखने / साझा करने की आवश्यकता नहीं है, एपीसी सीधे मेमोरी मेमोरी कैश के रूप में भी ठीक काम करेगा - हालांकि शायद प्रत्येक के रूप में इष्टतम नहीं है क्लाउड इंस्टेंस को अपना कैश गर्म करना होगा ...
Ray

35
एक opcodeकैश वह है जो सादे PHP कोड को मशीन कोड ("ओपकोड") में संकलित करता है और फिर इसे भविष्य के अनुरोधों के लिए संकलित रूप में संग्रहीत करता है (जब तक कि यह पता नहीं चलता कि मूल PHP फ़ाइल बदल गई है)। इसका मतलब यह है कि PHP को हर एक अनुरोध पर कुछ समय बचाने के लिए इस संकलन चरण को चलाने की आवश्यकता नहीं है। यह एक त्वरित साइट (कई अन्य लोगों के बीच) को सुनिश्चित करने में मदद करने के तरीकों में से एक है।
साइमन ईस्ट

2
एक दिलचस्प स्लाइड शो है, जो डायग्राम और बेंचमार्क के साथ कुछ अंतरों के बारे में बताता है: यहां स्लाइडशेयर.नेट
साइमन ईस्ट

1
क्या एपीसी के बजाय गैर-वितरित प्रणाली में मेमेकैच्ड का उपयोग किया जा सकता है? केवल एक रखना अच्छा होगा यदि भविष्य में आपके पास अधिक मशीनें होंगी। सही? या उन दोनों का उपयोग करें, एक ओपकोड के लिए और दूसरा एक्स्टेंसिबल कैशिंग के लिए?
अदिब अउरी

43

यदि आपको कई वेब सर्वरों में स्थिति को संरक्षित करने की आवश्यकता है (यदि आप संतुलित हैं और यह महत्वपूर्ण है कि कैश में सभी सर्वरों के लिए समान है) तो संरक्षित किया जाए।

एपीसी यदि आपको सिर्फ (या प्रत्येक) सर्वर पर पढ़ने (और लिखने) के लिए त्वरित मेमोरी तक पहुंच की आवश्यकता है।

याद रखें कि एपीसी आपके स्क्रिप्ट निष्पादन के समय को भी संकलित कर सकता है। उदाहरण के लिए, आप कैश स्टोरेज के लिए मेमेकैक्ड का उपयोग करते हुए, निष्पादन निष्पादन के लिए एपीसी का उपयोग कर सकते हैं।


3
APC स्टोरेज को भी कैश कर सकता है .... या?
mr_app

7
2014 का अपडेट: PHP 5.5 में Zend Optimizer Plus शामिल होगा (जो कि केवल opcache के लिए है, इसलिए उपयोगकर्ता कैश के लिए नहीं) और ऐसा लगता है कि APC PHP 5.4 से आगे विकसित नहीं होगा? हालाँकि अब APCu pecl.php.net/package/APCu है , जो APC के केवल उपयोगकर्ता कैश भागों को
ले

18

APC का मुख्य लाभ opcode कैश है। चूंकि PHP 5.5 ने अपने मूल और PHP 5.4 के लिए APC को एकीकृत OpCache को अभी भी बीटा के रूप में चिह्नित किया है, इसलिए यह आधिकारिक घोषणा नहीं है, लेकिन निकट भविष्य में APC के विकास को गिरा दिया जाएगा।

इसलिए मैं आपको मेमेकैड चुनने की सलाह दूंगा।


5
मैंने इसके बारे में सोचने के लिए वेब पर घंटों बिताए हैं, और मेरे पास एक ही निष्कर्ष है।
निकोलस ज़ोज़ोल

9

मैं गति के लिए एक का उपयोग करता हूं और दूसरा मेरे सभी सर्वरों को सिंक करने के लिए। यदि आप मेमेचे का उपयोग करते हैं तो कृपया उन खुले बंदरगाहों का ध्यान रखें जिन्हें आपको iptables के साथ ब्लॉक करने की आवश्यकता होगी।


6

हे थॉमसचैफ, मुझे आशा है कि यह आपके लिए देर से उपकरण नहीं है, लेकिन कृपया ध्यान दें कि एपीसी में "उपयोगकर्ता-कैश" से संबंधित कुछ मुद्दे हैं। एक लंबी कहानी को छोटा करने के लिए, जब आप कैशे प्रविष्टियों के लिए समय-समय निर्धारित करते हैं, या यदि आपका एपाचे आंतरिक एपीसी कोड (उदाहरण के लिए टाइमआउट) के अंदर क्रैश हो जाता है, तो आपको कुछ समस्याएं हो सकती हैं।

मेरे पास इस मुद्दे के बारे में एक प्रविष्टि है: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html , और आपको http: //t3.otgnu भी पढ़ना चाहिए । जानकारी / ब्लॉग / php / user-cache-timebomb.html (एपीसी डेवलपर्स में से एक जो मुझे लगता है)


22
मैं इस पर ठोकर खाई और यह अद्यतन करना चाहता था कि अब यह पता चला है (जैसा कि इसे 2 साल बाद होना चाहिए!)। यहाँ एक बंद बग रिपोर्ट है, उदाहरण के लिए: bugs.debian.org/cgi-bin/bugreport.cgi?bug=572529
शेन एच

1

मैं केवल APC का उपयोग करता हूं क्योंकि APC एक कोड कैश है और मेमेचे की तरह काम करता है! 2 के बजाय केवल 1 कॉन्फिगर फाइल।

और दोनों कैश की निगरानी के लिए केवल 1 जगह .....


1

यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं, लेकिन एक वीपीएस पर चलने वाली मेरी ड्रुपल वेबसाइटों के लिए मुझे एपीसी काम करता है! यदि आप CentOS 6 चला रहे हैं तो यह एक yum अपडेट के रूप में उपलब्ध है, जो कि मृत होने के लिए सरल है और डिफॉल्ट के रूप में कोई भी विन्यास उचित नहीं है। ए ब्रेनर इम्हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.