दिलचस्प सवाल है। आप वास्तव में क्या चाहते हैं PHP के लिए mySQL सर्वर से दो प्रश्न पूछने का एक तरीका है:
सर्वर, क्या आप लगभग अपनी सभी सीपीयू क्षमता का उपयोग कर रहे हैं?
सर्वर, क्या आप लगभग अपनी सभी डिस्क आईओ क्षमता का उपयोग कर रहे हैं?
उत्तरों के आधार पर, मुझे लगता है कि आप अपने PHP वेब ऐप के काम को सरल बनाना चाहते हैं ... शायद किसी प्रकार की खोज क्षमता को समाप्त करके, या कुछ डेटा को आक्रामक तरीके से कैश करके।
यदि आपके पास अपने (लिनक्स या बीएसडी) mysql सर्वर के लिए एक खोल है, तो इन दो आदेशों से आउटपुट को नजरअंदाज करके आपके दो प्रश्नों का उत्तर दिया जा सकता है।
sar -u 1 10 # the %idle column tells you about unused cpu cycles
sar -d 1 10 # the %util column tells you which disks are busy and how busy.
लेकिन, कोई मीठा छोटी क्वेरी नहीं है जो इस डेटा को आपके एसक्यूएल से आपके ऐप में लाती है।
संपादित करें: एक संभावना है कि एक छोटा PERL हैक या अन्य सरल प्रोग्राम जो आपके सर्वर पर चलता है, स्थानीय डेटा बेस से जुड़ता है, और एक बार हर बार (एक बार एक मिनट, शायद)% निष्क्रिय और% उपयोग निर्धारित करता है , और आपके डेटा बेस में एक छोटी-पंक्ति तालिका अपडेट करता है। यदि आप परवाह करते हैं, तो आप इस टेबल पर बहुत अधिक परेशानी के बिना सामान भी जोड़ सकते हैं। फिर आपका PHP ऐप इस तालिका से पूछ सकता है। यह स्मृति एक्सेस विधि का एक आदर्श उपयोग है। किसी भी दर पर, इसे सरल रखें: आप नहीं चाहते कि आपकी निगरानी आपके सर्वर का वजन कम करे।
एक दूसरी सबसे अच्छी चाल है, जिसे आप अपने ग्राहक से कर सकते हैं।
कमांड प्रॉस्सेलिस्ट पूर्ण आदेश जारी करें, पंक्तियों की संख्या (mySQL प्रक्रियाओं) की गणना करें जिसके लिए कमांड "क्वेरी" है, और यदि आपके पास उनमें से बहुत से हैं तो यह एक उच्च वर्कलोड होने पर विचार करें।
आप उन प्रक्रियाओं के लिए समय मान भी जोड़ सकते हैं जिनके पास स्थिति क्वेरी है, और उस समय के उच्च मूल्य का उपयोग थ्रेसहोल्ड के रूप में करें।
संपादित करें:
SELECT (COUNT(*)-1) P.QUERYCOUNT, SUM(P.TIME) QUERYTIME
FROM information_schema.PROCESSLIST P
WHERE P.COMMAND = 'Query'
: यदि आप एक mySQL 5 सर्वर पर चल रहे हैं, और अपने सर्वर खाते MySQL से सुसज्जित INFORMATION_SCHEMA की पहुंच है, तो आप एक प्रश्न सीधे प्रक्रिया डेटा मैंने कहा पाने के लिए उपयोग कर सकते हैं
COUNT (*) - 1: क्योंकि उपर्युक्त क्वेरी स्वयं क्वेरी के रूप में गिना जाता है।
आपको इस काम को सही उत्पादन में लाने के लिए थ्रेसहोल्ड मूल्यों के साथ बेझिझक करना होगा।
डेटा बेस सर्वर नहीं रख सकता है जब आपका PHP वेब ऐप शेड लोड होना अच्छा विचार है। फिर भी, एक बेहतर विचार है कि आप अपने लंबे समय से चलने वाले प्रश्नों की पहचान करें और उन्हें अनुकूलित करें।
धन्यवाद। यह बहुत दिलचस्प लग रहा है। आपने समस्या को समझने के साथ सिर पर नाखून मारा। मैं एक समर्पण पर चल रहा हूं एड सर्वर तो मेरे पास खोल पहुंच है। मैं ऐसे आदेशों को PHP के भीतर से कैसे कॉल कर सकता हूं? – Pablo
पाब्लो, मेरे संपादन देखें .... –
मुझे लगता है कि मेरा एसक्यूएल 4 चल रहा है इसलिए क्वेरी काम नहीं कर सका। क्या mysql4 5 से काफी खराब है? क्या प्रश्न 4 के लिए पुन: बनाया जा सकता है? – Pablo