php - एपीसी-> एपीसीयू/ओपी कैश, प्रदर्शन खराब




wordpress apc (2)

मेरे पास एक m3.xlarge EC2 उदाहरण है जिसे मैंने आज PHP 5.5.11 अपडेट किया है।

इस अद्यतन के साथ, यह php55-pecl-apc साथ php55-pecl-apcu

पढ़ने और प्रयोग करने के बाद, मेरी समझ यह है कि APC को OPCache साथ बदल दिया गया है, एक महत्वपूर्ण मूल्य स्टोर को छोड़कर जिसे APCu साथ वापस लाया जा सकता है।

लॉग इन करते समय वर्डप्रेस का उपयोग करके मेरी कॉन्फ़िगरेशन को उचित रूप से बदलने के बाद, अब बहुत धीमी है, कम से कम 300-900ms खराब है (फ्रंट एंड वार्निश के माध्यम से कैश किया गया है, और सही काम करता है ... लेकिन जब आप इसे व्यवस्थापक का उपयोग कर रहे हैं जानबूझकर कैश नहीं किया गया है, और पाप के रूप में धीमा है)।

मैंने प्रत्येक चरण के लिए छोटे नमूना आकार में अपग्रेड किए गए बेंचमार्क की एक श्रृंखला की है। जब मैं चला गया तो यह बदतर और बदतर हो गया।

  • एपीसी (अपग्रेड से पहले) -->
  • OPCache + नहीं एपीसीयू -->
  • ओपीसीयू + एपीसीयू + एपीसीयू के लिए WP प्लगइन

अभी मैं ओपीसीएच के साथ लटक रहा हूं, और कोई एपीसीयू नहीं।

  1. मैं एक ही प्रदर्शन कैसे प्राप्त कर सकता हूं? मुझे व्यवस्थापक इंटरफ़ेस पसंद था, मुझे प्यार था कि यह कितना तेज़ था। मैं ईमानदारी से नहीं देखता कि यह वास्तव में एक सुधार कैसे है, यह वास्तव में बहुत निराशाजनक है ... जब तक वहां कुछ सुपर लाइब्रेरी नहीं होती है, जिसे मैं नहीं जानता हूं। यह निश्चित रूप से मेरे पास नहीं है, या शायद यह अच्छी तरह से कॉन्फ़िगर नहीं किया गया है।
  2. # 1 का जवाब मानना ​​है कि 'आपने इसे गेंदों की तरह कॉन्फ़िगर किया है', तो क्या आप इस पर एक नज़र डालेंगे और देखेंगे कि यह उचित है या नहीं?

मेरे सेटअप के लिए मैं नवीनतम वर्डप्रेस का उपयोग कर रहा हूं, कुछ बड़े प्लगइन्स लेकिन मैं उन्हें नहीं ले सकता क्योंकि वे महत्वपूर्ण हैं। सौभाग्य से वार्निश अधिकांश कामों का ख्याल रखता है। मेरे पास मेरी वेबसाइट रूट में 4 कोर, 16 जीबी मेमोरी, ~ 10k फाइलें हैं। मेरे पास वर्डप्रेस के अलावा कोई वास्तविक कट्टर ऐप्स या कुछ भी नहीं है, यह एक काफी वेनिला सेटअप है। मुझे लगता है कि यह उन चीजों के लिए है जो मदद कर सकते हैं।

कॉन्फ़िग:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist
opcache.max_file_size=2M
opcache.consistency_checks=1
opcache.force_restart_timeout=180
opcache.error_log=/var/log/php-fpm/5.5/opcache.log
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0

आपके पास भी है

opcache.consistency_checks=1

जो दस्तावेज़ों के मुताबिक प्रदर्शन धीमा कर देगा। इसे बंद करो।

opcache.consistency_checks integer

यदि शून्य नहीं है, तो OPCache कैश चेकसम को प्रत्येक एन अनुरोधों को सत्यापित करेगा, जहां एन इस कॉन्फ़िगरेशन निर्देश का मान है। यह केवल डीबगिंग के दौरान सक्षम होना चाहिए, क्योंकि इससे प्रदर्शन खराब हो जाएगा।


आरएफसी से जो ओपीसीएच को PHP में एकीकृत करने के लिए ज़िम्मेदार था:

एपीसी पुराने अवैध स्क्रिप्ट की याददाश्त पुनः प्राप्त कर सकता है। एपीसी एक मेमोरी मैनेजर का उपयोग करता है और एक स्क्रिप्ट से जुड़े स्मृति को पुनः प्राप्त कर सकता है जो अब उपयोग में नहीं है; ऑप्टिमाइज़र + अलग-अलग काम करता है, और ऐसी गड़बड़ी को 'गंदे' के रूप में चिह्नित करता है, लेकिन वास्तव में इसे पुनः प्राप्त नहीं करता है। एक बार गंदा प्रतिशत कॉन्फ़िगर करने योग्य थ्रेसहोल्ड के ऊपर चढ़ता है - ऑप्टिमाइज़र + स्वयं को पुनरारंभ करता है। ध्यान दें कि इस व्यवहार में स्थिरता फायदे और नुकसान दोनों हैं।

मेरा अनुमान है कि आप उस थ्रेसहोल्ड को मार रहे हैं जो ओपोड कैश को पुनरारंभ करता है।

संदर्भ: https://wiki.php.net/rfc/optimizerplus#advantages_of_apc_over_optimizer





opcache