لقد تعلمت مؤخرًا عن مراقبة العقدة. على الرغم من أنني لا أملك الطاقة لتعلم كيفية كتابة نسخة بسيطة من المراقبة، إلا أنني لا أستطيع إلا أن أتعلم كيفية الحصول على هذه المؤشرات (أشعر بعد استشارة الكثير من المعلومات). أن هناك القليل جدًا من المقدمة لهذا المحتوى على الإنترنت المحلي، كما أنني أقوم بفرز نقاط المعرفة الخاصة بعقدة الخادم، لذا سأقوم بتلخيصها في هذه المقالة ومشاركتها معك).
قد تكون هناك مشاكل في بعض المؤشرات الواردة في هذه المقالة. مرحبًا بك في التبادل. في الواقع، يمكنك تنظيم هذه البيانات وكتابتها في مكتبة المراقبة واستخدامها في مشاريعك الصغيرة والمتوسطة. ثم يحتوي تفاعل الواجهة الأمامية على أدوات مثل bizcharts وg2، وترسم الواجهة الأمامية شاشة البيانات الكبيرة بنفسها. أعتقد أن أبعاد البيانات التي تم جمعها بواسطة esay Monitor ليست شاملة مثل أبعادنا.
عادة ما تكون اختناقات أداء الخوادم هي التالية:
استخدام وحدة المعالجة المركزية وتحميل وحدة المعالجة المركزية، وكلاهما يمكن أن يعكس مدى انشغال الجهاز إلى حد ما.
وحدة المعالجة المركزية (CPU) هو موارد وحدة المعالجة المركزية (CPU) التي تشغلها البرامج قيد التشغيل، مما يشير إلى كيفية تشغيل الجهاز للبرامج في وقت معين. كلما زاد معدل الاستخدام، فهذا يعني أن الجهاز يقوم بتشغيل الكثير من البرامج في هذا الوقت، والعكس صحيح. يرتبط مستوى الاستخدام ارتباطًا مباشرًا بقوة وحدة المعالجة المركزية. دعونا أولاً نفهم واجهات برمجة التطبيقات ذات الصلة وبعض تفسيرات المصطلحات لمساعدتنا في فهم التعليمات البرمجية للحصول على استخدام وحدة المعالجة المركزية.
تقومos.cpus()
بإرجاع مصفوفة من الكائنات التي تحتوي على معلومات حول كل نواة منطقية لوحدة المعالجة المركزية.
النموذج: سلسلة تحدد نموذج وحدة المعالجة المركزية الأساسية.
السرعة: رقم يحدد سرعة نواة وحدة المعالجة المركزية بالميغاهرتز.
مرات: كائن يحتوي على الخصائص التالية:
ملاحظة: القيمة nice
مخصصة لـ POSIX فقط. في أنظمة تشغيل Windows، تكون قيمة nice
دائمًا 0 لجميع المعالجات.
عندما ترى المستخدم والحقول الجميلة، فإن بعض الطلاب في حيرة من أمرهم بشأن المزايا، وأنا أيضًا، لذلك استفسرت بعناية عن معناها، يرجى المتابعة.
يشير المستخدمإلى نسبة الوقت الذي تعمل فيه وحدة المعالجة المركزية في وضع المستخدم .
ينقسم تنفيذ عملية التطبيق إلى وضع المستخدم ووضع kernel : تقوم وحدة المعالجة المركزية بتنفيذ منطق الكود الخاص بعملية التطبيق في وضع المستخدم، وعادةً ما تكون بعض الحسابات المنطقية أو العددية ؛ وتقوم وحدة المعالجة المركزية بتنفيذ مكالمات النظام التي بدأتها العملية في وضع kernel، وعادةً ما تكون استجابة لطلب العملية للحصول على الموارد.
برنامج مساحة المستخدم هو أي عملية ليست جزءًا من النواة. تعد الأصداف والمترجمات وقواعد البيانات وخوادم الويب والبرامج المتعلقة بسطح المكتب جميعها عمليات تتعلق بمساحة المستخدم. إذا لم يكن المعالج خاملاً، فمن الطبيعي أن يتم قضاء معظم وقت وحدة المعالجة المركزية في تشغيل عمليات مساحة المستخدم.
تمثلNice نسبة الوقت الذي تعمل فيه وحدة المعالجة المركزية في وضع المستخدم ذي الأولوية المنخفضة . وتعني الأولوية المنخفضة أن القيمة اللطيفة للعملية أقل من 0.
يمثل مستخدمنسبة الوقت الذي تعمل فيه وحدة المعالجة المركزية في وضع kernel .
بشكل عام، يجب ألا يكون استخدام وحدة المعالجة المركزية في وضع kernel مرتفعًا جدًا إلا إذا بدأت عملية التطبيق عددًا كبيرًا من استدعاءات النظام. إذا كانت مرتفعة جدًا، فهذا يعني أن استدعاء النظام يستغرق وقتًا طويلاً، مثل عمليات الإدخال والإخراج المتكررة.
يشير الخمولإلى نسبة الوقت الذي تكون فيه وحدة المعالجة المركزية في حالة الخمول، حيث لا يكون لدى وحدة المعالجة المركزية أي مهام لأداءها.
يمثلirq نسبة الوقت الذي تعالج فيه وحدة المعالجة المركزية مقاطعات الأجهزة .
تعد مقاطعة بطاقة الشبكة مثالًا نموذجيًا: بعد أن تتلقى بطاقة الشبكة حزمة البيانات، تقوم بإعلام وحدة المعالجة المركزية للمعالجة من خلال مقاطعة الأجهزة. إذا كانت حركة مرور شبكة النظام كثيفة جدًا، فقد تتم ملاحظة زيادة كبيرة في استخدام irq.
إذا كانت حالة المستخدم أقل من 70%، وحالة النواة أقل من 35%، والحالة العامة أقل من 70%، فيمكن اعتبارها حالة صحية.
يوضح المثال التالي استخدام الأسلوب os.cpus() في Node.js:
المثال 1:
// برنامج Node.js لتوضيح //طريقة os.cpus() // تخصيص وحدة نظام التشغيل const os = require('os'); // طباعة قيم os.cpus() console.log(os.cpus());
الإخراج:
[ { الموديل: 'Intel(R) Core(TM) i5-7200U CPU @ 2.50 جيجا هرتز'، السرعة: 2712، مرات: { المستخدم:900000، لطيف:0، النظام:940265، الخمول:11928546، إيرك:147046 } }, { الموديل: 'Intel(R) Core(TM) i5-7200U CPU @ 2.50 جيجا هرتز'، السرعة: 2712، مرات: { المستخدم: 860875، لطيف: 0، النظام: 507093، الخمول: 12400500، إيرك: 27062 } }، { الموديل: 'Intel(R) Core(TM) i5-7200U CPU @ 2.50 جيجا هرتز'، السرعة: 2712، مرات: { المستخدم:1273421، لطيف:0، النظام:618765، الخمول:11876281، إيرك:13125 } }, { الموديل: 'Intel(R) Core(TM) i5-7200U CPU @ 2.50 جيجا هرتز'، السرعة: 2712، مرات: { user:943921, Nice:0, sys:460109, idle:12364453, irq:12437 } } ]
ما يلي هو الكود الخاص بكيفية الحصول على استخدام وحدة المعالجة المركزية
const os = require('os'); const Sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); فئة OSUtils { منشئ () { this.cpuUsageMSDefault = 1000; // الفترة الافتراضية لاستخدام وحدة المعالجة المركزية} /** * احصل على استخدام وحدة المعالجة المركزية لفترة زمنية معينة* @param { Number } Options.ms [الفترة الزمنية، الافتراضي هو 1000 مللي ثانية، وهو ثانية واحدة] * @param { Boolean } Options.percentage [صحيح (تم إرجاعه كنتيجة مئوية) | * @returns { الوعد } */ getCPUUsage غير المتزامن (options={}) { ثابت أن = هذا؛ Let { cpuUsageMS، النسبة المئوية } = options؛ cpuUsageMS = cpuUsageMS ||. const t1 = that._getCPUInfo(); // معلومات وحدة المعالجة المركزية عند النقطة الزمنية t1 تنتظر النوم(cpuUsageMS); const t2 = that._getCPUInfo(); // معلومات وحدة المعالجة المركزية عند النقطة الزمنية t2 const idle = t2.idle - t1.idle; مجموع ثابت = t2.total - t1.total؛ السماح بالاستخدام = 1 - خامل / إجمالي؛ إذا (النسبة المئوية) الاستخدام = (الاستخدام * 100.0).toFixed(2) + "%"; استخدام العودة؛ } /** * احصل على معلومات الوقت الفوري لوحدة المعالجة المركزية * @returns { Object } معلومات وحدة المعالجة المركزية * المستخدم <number> عدد المللي ثانية التي قضتها وحدة المعالجة المركزية في وضع المستخدم. * لطيف <number> عدد المللي ثانية التي تقضيها وحدة المعالجة المركزية في الوضع اللطيف. * sys <number> عدد المللي ثانية التي قضتها وحدة المعالجة المركزية في وضع النظام. * الخمول <number> عدد المللي ثانية التي قضتها وحدة المعالجة المركزية في وضع الخمول. * irq <number> عدد المللي ثانية التي قضتها وحدة المعالجة المركزية في وضع طلب المقاطعة. */ _getCPUInfo() { const cpus = os.cpus(); دع المستخدم = 0، لطيف = 0، sys = 0، خامل = 0، irq = 0، الإجمالي = 0؛ لـ (دع وحدة المعالجة المركزية في وحدة المعالجة المركزية) { أوقات ثابتة = cpus[cpu].times; user += times.user; لطيفة += مرات.نيس؛ sys += times.sys; idle += times.idle; irq += times.irq; } Total += user + Nice + sys + idle + irq; يعود { مستخدم، نظام, عاطل، المجموع، } } } const cpuUsage = new OSUtils().getCPUUsage({ النسبة المئوية: صحيح }); console.log('cpuUsage: ', cpuUsage.then(data=>console.log(data))); // جهاز الكمبيوتر الخاص بي
. من السهل فهم تحميل وحدة المعالجة المركزية (loadavg) ويشير إلى حد معين عدد العمليات التي تشغل وقت وحدة المعالجة المركزية والعمليات التي تنتظر وقت وحدة المعالجة المركزية هو متوسط التحميل. تشير العمليات التي تنتظر وقت وحدة المعالجة المركزية هنا إلى العمليات التي تنتظر الاستيقاظ، باستثناء العمليات في حالة الانتظار.
قبل ذلك، نحتاج إلى معرفة أن واجهة برمجة تطبيقات العقدة
os.loadavg()
تُرجع مصفوفة تحتوي على متوسط تحميل يبلغ 1 و5 و15 دقيقة.
متوسط التحميل هو مقياس لنشاط النظام الذي يحسبه نظام التشغيل ويتم التعبير عنه برقم عشري.
متوسط التحميل هو مفهوم خاص بيونكس. في نظام التشغيل Windows، تكون القيمة المرجعة دائمًا [0, 0, 0]
ويتم استخدامها لوصف الانشغال الحالي لنظام التشغيل. ويمكن فهمها ببساطة على أنها متوسط عدد المهام التي تستخدمها وحدة المعالجة المركزية وتنتظر استخدامها وحدة المعالجة المركزية لكل وحدة زمنية. حمل وحدة المعالجة المركزية مرتفع جدًا، مما يشير إلى وجود عدد كبير جدًا من العمليات في العقدة، وقد ينعكس ذلك في بدء عمليات جديدة بشكل متكرر باستخدام وحدة Forbidden City.
const os = require('os'); // عدد مؤشرات ترابط وحدة المعالجة المركزية const length = os.cpus().length; // متوسط الحمل لوحدة المعالجة المركزية أحادية النواة، يُرجع مصفوفة تحتوي على متوسط الحمل 1 و5 و15 دقيقة os.loadavg().map(load => Load / length);
دعونا نشرح
، وإلا فلن تتمكن من قراءتها. افهم الكود الخاص بنا للحصول على مؤشرات الذاكرة،
تقوم هذه الوظيفة بإرجاع 4 معلمات، المعاني والاختلافات هي كما يلي:
استخدم الكود التالي لطباعة استخدام الذاكرة لعملية فرعية ويمكن ملاحظة أن rss يساوي تقريبًا RES للأمر العلوي. بالإضافة إلى ذلك، تبلغ ذاكرة العملية الرئيسية 33 ميجا فقط، وهي أصغر من ذاكرة العملية الفرعية. ويمكن ملاحظة أن استخدام الذاكرة يتم حسابه بشكل مستقل.
فار showMem = وظيفة(){ var mem =process.memoryUsage(); تنسيق فار = وظيفة (بايت) { إرجاع (بايت / 1024 / 1024).toFixed(2) + 'MB'; }; console.log('العملية: heapTotal' + تنسيق (mem.heapTotal) + 'heapUsed' + تنسيق (mem.heapUsed) + 'rss' + تنسيق (mem.rss) + 'خارجي:' + تنسيق (mem.external) ); console.log('-------------------------------------------- --- ---------------'); };
بالنسبة للعقدة، بمجرد حدوث تسرب للذاكرة، ليس من السهل استكشاف الأخطاء وإصلاحها. إذا تم رصد أن الذاكرة ترتفع فقط ولا تنخفض، فمن المؤكد أن هناك مشكلة تسرب للذاكرة. الاستخدام الصحي للذاكرة يجب أن يرتفع وينخفض. عندما يكون الوصول كبيرًا، يرتفع، وعندما ينخفض، ينخفض
const os = require('os'); // تحقق من استخدام ذاكرة عملية العقدة الحالية const { rss, heapUsed, heapTotal } =process.memoryUsage(); // احصل على ذاكرة النظام الخالية const systemFree = os.freemem(); // احصل على إجمالي ذاكرة النظام const systemTotal = os.totalmem(); وحدة التصدير = { الذاكرة: () => { يعود { النظام: 1 - systemFree / systemTotal، // كومة استخدام ذاكرة النظام: heapUsed / headTotal، // عقدة استخدام ذاكرة عملية العقدة الحالية: rss / systemTotal، // نسبة استخدام ذاكرة عملية العقدة الحالية من ذاكرة النظام} } }
تقوم مراقبة القرص بشكل أساسي بمراقبة استخدام القرص. نظرًا لكتابة السجل بشكل متكرر، يتم استهلاك مساحة القرص تدريجيًا. بمجرد عدم كفاية القرص، فإنه سوف يسبب مشاكل مختلفة في النظام. قم بتعيين حد أعلى لاستخدام القرص بمجرد أن يتجاوز استخدام القرص قيمة التحذير، يجب على مسؤول الخادم تنظيم السجلات أو تنظيف القرص.
يشير التعليمة البرمجية التالية إلى الإصدار 3.0 من الشاشة السهلة.
const { execSync } = require('child_process'); نتيجة const = execSync('df -P', { الترميز: 'utf8'}) خطوط ثابتة = result.split('n'); مقياس ثابت = {}; خطوط لكل (خط => { إذا (line.startsWith('/')) { const match = line.match(/(d+)%s+(/.*$)/); إذا (تطابق) { معدل const = parseInt(match[1] || 0); ثابت مثبت = مباراة[2]; إذا (!mounted.startsWith('/Volumes/') && !mounted.startsWith('/private/')) { متري[مثبت] = معدل؛ } } } }); console.log(metric)
يشير تحميل الإدخال/الإخراج بشكل أساسي إلى الإدخال/الإخراج للقرص. إنه يعكس حالة القراءة والكتابة على القرص بالنسبة للتطبيقات المكتوبة بواسطة Node، والتي تكون مخصصة بشكل أساسي لخدمات الشبكة، فمن غير المرجح أن يكون حمل الإدخال / الإخراج مرتفعًا جدًا، ويأتي ضغط الإدخال / الإخراج للعديد من القراءات من قاعدة البيانات .
للحصول على مؤشرات الإدخال/الإخراج، نحتاج إلى فهم أمر Linux يسمى iostat. إذا لم يكن مثبتًا، فستحتاج إلى تثبيته. دعنا نلقي نظرة على سبب قدرة هذا الأمر على عكس مؤشرات الإدخال/الإخراج
iostat -dx
وصف الخاصية
rrqm/s: عدد عمليات القراءة المدمجة في الثانية. أي rmerge/s (عدد مرات دمج طلبات القراءة للجهاز في الثانية، وسيقوم نظام الملفات بدمج الطلبات لقراءة نفس الكتلة) wrqm/s: عدد عمليات الكتابة المدمجة في الثانية. أي wmerge/s (عدد مرات دمج طلبات الكتابة إلى الجهاز في الثانية) r/s: عدد مرات القراءة من جهاز الإدخال/الإخراج المكتملة في الثانية. هذا هو ريو / ق w/s: عدد عمليات الكتابة إلى جهاز الإدخال/الإخراج المكتملة في الثانية. هذا هو wi/s rsec/s: عدد القطاعات المقروءة في الثانية. هذا هو rsect/s wsec/s: عدد القطاعات المكتوبة في الثانية. أي wsect/s rkB/s: K بايت للقراءة في الثانية. إنه نصف rsect/s لأن حجم كل قطاع هو 512 بايت. wkB/s: عدد البايتات K المكتوبة في الثانية. إنه نصف wsect/s. avgrq-sz: متوسط حجم البيانات (القطاعات) لكل عملية إدخال/إخراج للجهاز. avgqu-sz: متوسط طول قائمة انتظار الإدخال/الإخراج. انتظار: متوسط وقت الانتظار (ملي ثانية) لكل عملية إدخال/إخراج للجهاز. svctm: متوسط وقت المعالجة (بالمللي ثانية) لكل عملية إدخال/إخراج للجهاز. %util: ما هي النسبة المئوية من الثانية المستخدمة لعمليات الإدخال/الإخراج، أي النسبة المئوية لوحدة المعالجة المركزية التي يستهلكها الإدخال/الإخراج،
نحتاج فقط إلى مراقبة %util
إذا كانت %util قريبة من 100% ، فهذا يعني أن عددًا كبيرًا جدًا من I يتم إنشاء طلبات /O. تم تحميل نظام الإدخال/الإخراج بالكامل وقد يكون هناك اختناق على هذا القرص.
إذا كان الانتظار أكبر بكثير من svctm، فهذا يعني أن قائمة انتظار الإدخال/الإخراج طويلة جدًا وأن وقت استجابة التطبيق يصبح أبطأ. إذا تجاوز وقت الاستجابة النطاق الذي يمكن للمستخدم تحمله، فيمكنك التفكير في استبدال قرص أسرع. ضبط خوارزمية رفع النواة وتحسين التطبيق أو ترقية وحدة المعالجة المركزية.
وقت استجابة الصفحة لـ Nodejs. تم تحديد الحل من مقالة مدونة المعلم Liao Xuefeng.
أرغب مؤخرًا في مراقبة أداء Nodejs. يعد تسجيل السجل وتحليله أمرًا مزعجًا للغاية. إن أبسط طريقة هي تسجيل وقت المعالجة لكل طلب HTTP وإعادته مباشرة في رأس استجابة HTTP.
يعد تسجيل وقت طلب HTTP أمرًا بسيطًا للغاية، ويعني تسجيل طابع زمني عند تلقي الطلب، وتسجيل طابع زمني آخر عند الاستجابة للطلب.
ومع ذلك، ينتشر كود res.send() عبر ملفات js المختلفة، لذلك لا يمكنك تغيير كل وظيفة معالجة URL.
الفكرة الصحيحة هي استخدام البرمجيات الوسيطة لتحقيق ذلك. لكن Nodejs ليس لديها أي طريقة لاعتراض res.send()، فكيف يمكن كسرها؟
في الواقع، طالما أننا غيرنا تفكيرنا قليلاً، وتخلىنا عن طريقة OOP التقليدية، ونظرنا إلى res.send() ككائن دالة، فيمكننا أولاً حفظ وظيفة المعالجة الأصلية res.send، ثم استبدال res.send بوظيفتنا. وظيفة المعالجة الخاصة:
app.use (function (req, res, next) { // سجل وقت البدء: var exec_start_at = Date.now(); // احفظ وظيفة المعالجة الأصلية: var _send = res.send; // ربط وظيفة المعالج الخاصة بنا: إرسال = وظيفة () { //إرسال الرأس: res.set('X-Execution-Time', String(Date.now() - exec_start_at)); // استدعاء وظيفة المعالجة الأصلية: return _send.apply(res,حجج); }; التالي()؛ });
في بضعة أسطر من التعليمات البرمجية، يتم الانتهاء من الطابع الزمني.
ليست هناك حاجة لمعالجة الأسلوب res.render() لأن res.render() يستدعي res.send() داخليًا.
عند استدعاء وظيفة application()، من المهم تمرير كائن الدقة، وإلا فإن وظيفة المعالجة الأصلية تشير إلى غير محدد، مما يؤدي مباشرة إلى حدوث خطأ.
وقت استجابة الصفحة الرئيسية المُقاس 9 مللي ثانية
مسرد QPS:
QPS: الاستعلامات في الثانية تعني "معدل الاستعلام في الثانية"، وهو عدد الاستعلامات التي يمكن للخادم الرد عليها في الثانية، هو مقياس لمقدار حركة المرور التي يتعامل معها خادم استعلام معين خلال فترة زمنية محددة.
على الإنترنت، غالبًا ما يتم قياس أداء الجهاز الذي يعمل كخادم نظام اسم المجال بمعدل الاستعلام في الثانية.
TPS: هو اختصار TransactionsPerSecond، وهو عدد المعاملات في الثانية. إنها وحدة قياس نتائج اختبار البرمجيات. تشير المعاملة إلى العملية التي يرسل فيها العميل طلبًا إلى الخادم ويستجيب الخادم. يبدأ العميل التوقيت عندما يرسل طلبًا وينتهي عندما يتلقى استجابة الخادم لحساب الوقت المستخدم وعدد المعاملات المكتملة.
QPS vs TPS: يشبه QPS بشكل أساسي TPS، ولكن الفرق هو أن زيارة الصفحة تشكل TPS ولكن قد يؤدي طلب الصفحة إلى إنشاء طلبات متعددة إلى الخادم، ويمكن للخادم احتساب هذه الطلبات على أنها "QPS". على سبيل المثال، سيؤدي الوصول إلى الصفحة إلى طلب الخادم مرتين، وسيؤدي الوصول مرة واحدة إلى إنشاء "T" واثنين من "Q".
. وقت الاستجابة: إجمالي الوقت المستغرق لتنفيذ الطلب من البداية إلى النهاية عند استلام بيانات الاستجابة، أي الوقت من بدء العميل للطلب إلى تلقي نتيجة استجابة الخادم.
يعد زمن الاستجابة RT (زمن الاستجابة) أحد أهم مؤشرات النظام، حيث تعكس قيمته العددية سرعة النظام بشكل مباشر.
يشير عدد التزامن إلى عدد الطلبات التي يمكن للنظام التعامل معها في نفس الوقت، وهذا يعكس أيضًا سعة التحميل للنظام.
ترتبط الإنتاجية (سعة تحمل الضغط) للنظام ارتباطًا وثيقًا باستهلاك وحدة المعالجة المركزية للطلبات والواجهات الخارجية وعمليات الإدخال والإخراج وما إلى ذلك. كلما زاد استهلاك وحدة المعالجة المركزية لطلب واحد، كانت واجهة النظام الخارجية وسرعة الإدخال/الإخراج أبطأ، وانخفضت سعة إنتاجية النظام، والعكس صحيح.
عدة معلمات مهمة لإنتاجية النظام: QPS (TPS)، وعدد التزامنات، ووقت الاستجابة.
QPS (TPS): (الاستعلام في الثانية) عدد الطلبات/المعاملات في الثانية
التزامن: عدد الطلبات/المعاملات التي يعالجها النظام في نفس الوقت
وقت الاستجابة: بشكل عام،
يتم حساب متوسط وقت الاستجابة بعد فهم معنى ما سبق ثلاثة عناصر العلاقة بينهم:
دعونا نفهم المفاهيم المذكورة أعلاه من خلال مثال. وفقًا لقاعدة 80/20، إذا تركزت 80% من الزيارات اليومية في 20% من الوقت، فإن هذه الـ 20% من الوقت تسمى وقت الذروة.
1، 300 واط يوميًا من الطاقة الكهروضوئية على جهاز واحد، ما هو عدد QPS الذي يتطلبه هذا الجهاز؟
(3000000 * 0.8) / (86400 * 0.2) = 139 (QPS)
2. إذا كان QPS لآلة ما هو 58، فما هو عدد الأجهزة اللازمة لدعمها؟
139 / 58 = 3
في هذه المرحلة، إذا قمت بتنفيذ البنية الأمامية للمشاريع العامة الصغيرة والمتوسطة الحجم ونشرت خدمات العقدة الخاصة بك، فستعرف عدد الأجهزة اللازمة لتشكيل مجموعة للإبلاغ عن ppt. يمكنك حساب قيمة تقريبية باستخدام PV .
نحن بحاجة إلى فهم اختبار التحمل (نحتاج إلى الاعتماد على اختبار التحمل للحصول على QPS). خذ الأمر ab كمثال:
تنسيق الأمر:
ab [options] [http://]hostname[:port]/path
Common. المعلمات هي كما يلي:
-n إجمالي عدد الطلبات عدد الطلبات -c التزامن عدد التزامن -t timelimit الحد الأقصى لعدد الثواني للاختبار، والذي يمكن اعتباره مهلة الطلب -p postfile ملف يحتوي على بيانات تتطلب POST - معلومات رأس نوع المحتوى من نوع المحتوى التي تستخدمها بيانات POST لنسخ الكود