हमारे पास एक बहुत ही भारी लोडेड सर्वर है, जो कि nginx और PHP-FPM चल रहा है। हमारे पास इस सर्वर पर 6 वेबसाइट हैं, जो PHP-FPM और nginx चला रही हैं। सॉफ्टवेयर सभी vBulletin 3.8 और वर्डप्रेस है। डेटाबेस एक अलग सर्वर पर हैं।
अब, क्योंकि ये अत्यधिक लोकप्रिय वेबसाइट हैं, हमारे पास आम तौर पर एक समय में ऑनलाइन 7-8,000 आगंतुक आते हैं, जिनमें से प्रत्येक पृष्ठ अधिकांश भाग के लिए डेटाबेस को हिट करता है। मेरा मानना है कि यह हमारी समस्याओं का कारण है।
क्योंकि हमारे पास MySQL सर्वर पर इतने बड़े डेटाबेस हैं, और क्योंकि प्रश्न, ईमानदारी से, सॉफ्टवेयर में बहुत बेहतर हो सकते हैं, मुझे लगता है कि MySQL कभी-कभी PHP को समय पर ढंग से परिणाम वापस करने में विफल होगा, अंततः एक कैस्केड प्रभाव पैदा करेगा। जब तक हम PHP-FPM को पुनः लोड नहीं करते, तब तक सब कुछ रुक जाता है। जब हम ऐसा करते हैं, तो चीजें फिर से ठीक होने लगती हैं।
इसका कारण मुझे समस्याएँ हो रही हैं क्योंकि मैं वास्तव में लॉग से कुछ भी नहीं समझ सकता हूँ। MySQL स्लो क्वेरी लॉग में, डाउनटाइम होने पर मुझे कुछ भी दिलचस्पी नहीं दिखाई देती है। नगनेक्स लॉग में, मैं हजारों प्रविष्टियों को यह कहते हुए देखता हूं कि रीड रिक्वेस्ट टाइम आउट हो गई है या कनेक्शन टाइम आउट हो गया है (TO PHP-FPB)। और PHP-FPM लॉग्स में, मुझे बहुत सी रेखाएं दिखाई देती हैं जो कहती हैं "निष्पादन समय से बाहर (31 सेकंड), समाप्त करना
तो इस बिंदु पर मैं अभी पूरी तरह से नहीं जानता कि समस्या की तलाश कहाँ है। जाहिर है, जो कुछ भी हो रहा है क्योंकि ये स्क्रिप्ट कभी-कभी जल्दी निष्पादित नहीं होती हैं (आम तौर पर वे एक सेकंड के भीतर लोड होते हैं, लेकिन कुछ ऐसा होता है जो लोड समय को आसमान छू जाता है)। यह दिन में कई बार होता है और हमारे लिए काफी मुद्दा बन गया है।
अभी के लिए मेरे पास हर 10 मिनट में php5-fpm पुनः लोड करने के लिए एक कॉन्ट्राब है, जो दुर्घटनाग्रस्त समस्या का ख्याल रखता है। बेशक, जब PHP पुनः लोड होता है, तो nginx 502 गेटवे त्रुटि फेंकता है, इसलिए यह बहुत अधिक समाधान नहीं है।
PHP एपीसी कैश चला रहा है, अगर यह मायने रखता है। मैंने कुछ स्थानों पर पढ़ा है कि APC कुछ परिस्थितियों में फांसी का कारण बन सकता है।
कोई संकेत सहायक होगा। मैं वास्तव में हर समय इस मशीन के बारे में चिंता नहीं करना चाहूंगा।
अधिक जानकारी प्रदान की जा सकती है। बस मुझे यह बताना चाहिए कि आपको क्या चाहिए।
अद्यतन: मैं बस एक वेब रूट के लिए apc.php पर कॉपी किया और हमारे आँकड़े को देखने के लिए इसे एक्सेस किया। चीजें अच्छी लग रही थीं। फिर मैंने उपयोगकर्ता आँकड़े पर जाने के लिए लिंक पर क्लिक किया और सर्वर को तुरंत लटका दिया। मैंने php-fpm को पुनः लोड किया और फिर उपयोगकर्ता आँकड़े पृष्ठ को पुनः लोड किया और यह ठीक हो गया। एक मिनट इंतजार किया, फिर से लोड किया गया, सर्वर फिर से लटका।
तो यह निश्चित रूप से एपीसी से संबंधित है। सवाल है - हम इसे कैसे ठीक करते हैं?
APC कॉन्फ़िगरेशन:
[apc]
apc.enabled="1"
apc.stat = "1"
apc.max_file_size = "2M"
apc.localcache = "1"
apc.localcache.size = "256"
apc.shm_segments = "1"
apc.ttl = "3600"
apc.user_ttl = "7200"
apc.gc_ttl = "3600"
apc.cache_by_default = "1"
apc.filters = ""
apc.write_lock = "1"
apc.num_files_hint= "10000"
apc.user_entries_hint="10000"
apc.shm_size = "1G"
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.include_once_override = "0"
apc.file_update_protection="2"
apc.canonicalize = "1"
apc.report_autofilter="0"
apc.stat_ctime="0"
अपडेट 2: हमने इस पर कुछ प्रगति की है। यह पता चला है कि वर्डप्रेस कैशिंग प्लगइन (W3 कुल कैश) वह है जो दुर्घटनाओं का कारण बन रहा था। हम अभी भी नहीं जानते कि क्यों, लेकिन इसके साथ अक्षम होने के बाद, हम लगभग 4 घंटे के लिए PHP चला रहे हैं अब कोई पुनः लोड नहीं, कोई मंदी नहीं, कोई क्रैश नहीं। हम अभी भी vBulletin मंचों पर APC का उपयोग कर रहे हैं और वहां कोई समस्या नहीं है। क्या कोई तरीका है जिससे हम यह निर्धारित कर सकते हैं कि APC दुर्घटनाग्रस्त क्यों हो रहा है? मैं इसे अपने वर्डप्रेस इंस्टॉलेशन पर उपयोग करना पसंद करूंगा, लेकिन एक नाजुक प्रणाली की कीमत पर नहीं।