मैं एक उच्च ट्रैफिक वेबसर्वर फार्म पर काम कर रहा हूं जो डायनामिक PHP कोड की सेवा करता है जिसमें अधिकांश अनुरोधों पर लगभग 100 फाइलें शामिल हैं। एपीसी ओपोड कैश सक्षम है, include_once_override सक्षम है, और मैंने कैश में 64 एमबी रैम आवंटित किया है, फिर भी जब मैं अपाचे प्रक्रिया को दबाता हूं, तब भी मैं इसे खोलता हूं() आईएनजी और स्टेट() इन सभी में से प्रत्येक अनुरोध के लिए शामिल होना चाहिए कैश से खींचा गया। मैं कैश आंकड़ों में देख सकता हूं कि कैश जनसंख्या का उपयोग किया जा रहा है और 100% हिट्रेट के साथ उपयोग किया जा रहा है। क्या कोई भी अंतर्दृष्टि प्रदान कर सकता है?एपीसी सक्षम लेकिन अपाचे अभी भी फ़ाइलें खोल रहा है?
उत्तर
, सुनिश्चित करें कि आप अपने आवेदन में शामिल प्रत्येक के लिए पूर्ण पथनाम का उपयोग कर रहे हैं। प्रति एपीसी प्रलेखन:
apc.stat पूर्णांक
सावधान इस सेटिंग में बदलाव करें। यह डिफ़ॉल्ट रूप से एपीसी को प्रत्येक अनुरोध पर स्क्रिप्ट (चेक) करने के लिए मजबूर करने के लिए मजबूर करता है कि यह संशोधित किया गया है या नहीं। यदि इसे संशोधित किया गया है तो यह नया संस्करण पुन: संकलित और कैश करेगा। यदि यह सेटिंग बंद है, तो एपीसी जांच नहीं करेगा, जिसका आमतौर पर मतलब है कि फ़ाइलों को दोबारा जांचने के लिए एपीसी को मजबूर करने के लिए, वेब सर्वर को पुनरारंभ करना होगा या कैश को मैन्युअल रूप से साफ़ करना होगा। ध्यान दें कि FastCGI वेब सर्वर कॉन्फ़िगरेशन पुनरारंभ करने पर कैश को साफ़ नहीं कर सकता है। एक उत्पादन सर्वर पर जहां स्क्रिप्ट फ़ाइलें शायद ही कभी बदलती हैं, अक्षम आंकड़ों द्वारा एक महत्वपूर्ण प्रदर्शन बढ़ावा प्राप्त किया जा सकता है।
शामिल/आवश्यक फाइलों के लिए यह विकल्प भी लागू होता है, लेकिन ध्यान दें कि सापेक्ष पथ में (कोई भी पथ जो यूनिक्स के साथ/प्रारंभ नहीं होता है) में एपीसी को फ़ाइल की विशिष्ट पहचान करने के लिए जांचना होगा। यदि आप पूर्ण पथ का उपयोग करते हैं तो एपीसी स्टेट को छोड़ सकता है और फ़ाइल के लिए अद्वितीय पहचानकर्ता के रूप में उस पूर्ण पथ का उपयोग कर सकता है।
PHP के लिए अंगूठे का एक अच्छा शासन एक निरंतर कि इतने की तरह अपनी परियोजना के लिए पूर्ण पथ है परिभाषित करने के लिए है:
// Assumes __FILE__ is in the root of your project
define('PATH_PROJECT', realpath(dirname(__FILE__)));
तो का उपयोग अपने इतने तरह शामिल हैं:
include_once PATH_PROJECT . '/some/dir/file.php';
इस प्रकार आपके पास अभी भी सापेक्ष पथ की सुविधा है, लेकिन वास्तव में पूर्ण पथ का उपयोग कर रहे हैं।
क्या, क्या आपने अपने सर्वर को इनके साथ और बिना include_once_override के बेंचमार्क किया है? – hobodave
धन्यवाद! हां, मैंने बेंचमार्क के साथ और बिना देखा और कोई ध्यान देने योग्य अंतर नहीं देखा .. अब मैं पूर्ण पथ लागू करने के बाद बहुत कम stat() s देख रहा हूं, लेकिन, मुझे अभी भी प्रत्येक फ़ाइल के लिए एक एक्सेस() दिखाई दे रही है, यहां तक कि apc.stat = 0. क्या यह सामान्य है? फ़ाइलों को बिल्कुल क्यों पहुंचाया जाना चाहिए? – Will
क्या आप वाकई फ़ाइल के प्रारंभिक शामिल नहीं देख रहे हैं? आप कौन सा संस्करण उपयोग कर रहे हैं? एपीसी में शामिल हैं Icon_override के साथ ऐतिहासिक रूप से मुद्दों। साथ ही, कृपया जवाबों का उपयोग करने के बजाय प्रतिक्रियाओं के साथ अपने मूल प्रश्न को संपादित करें। – hobodave