This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
के साथ ASP.NET कोर अनुप्रयोगों का परीक्षण लोड करें
Tuesday, 02 December 2025
आपका अनुप्रयोग आपके लैपटॉप पर पूर्ण रूप से काम करता है।
यह एक अंधेरे की परिकल्पना है प्रत्येक विकासकर्ता डरता है, लेकिन अधिकतर नहीं test के लिए निष्पादन परीक्षण वैकल्पिक नहीं है। यह दो '-' भाग मार्गदर्शक आपको सही रूप से दिखाएगा कि कैसे इस परिदृश्य को रोकने के लिए k'6,' आधुनिक लोड परीक्षण उपकरण का उपयोग किया जा सकता है जो ''' उद्यम अनुप्रयोगों के लिए काफी शक्तिशाली है लेकिन अपने CI '/' सीडी पाइपलाइन में चलाने के लिए पर्याप्त सरल है
यह है भाग 1 के साथ लोड परीक्षण पर दो खंड श्रृंखला का k6:
- भाग 1: संस्थापना के बारे में परिचय
- भाग 2: व्यावहारिक कार्यान्वयन: लेखन परीक्षणों, आईसीM SK2 सीडी सम्मिलन , प्रोफाइलिंगMSC4 और वास्तविक-world उदाहरण
परिचय
निष्पादन परीक्षण किसी भी उत्पादन ASP के लिए महत्वपूर्ण है।
यह व्यापक गाइड आपको दिखाता है कि कैसे एपीएसपी के परीक्षण को लोड करें एमएसके0 - एक सबसे शक्तिशाली ओपन - स्रोत लोड परीक्षण उपकरण उपलब्ध है न्यूनतम ब्लॉग हमारे उदाहरण अनुप्रयोग के रूप में (एक सरल मार्कडाउन- स्मृति और आउटपुट कैचिंग के साथ आधारित ब्लॉग कोई भी ASP.NET कोर अनुप्रयोग.
इस दो '-' भाग श्रृंखला के अंत तक ',' आप ''' कैसे जानेंगे
- किसी भी प्लेटफॉर्म पर k6 को संस्थापित और कॉन्फ़िगर करें
- विभिन्न परिदृश्यों के लिए व्यापक निष्पादन परीक्षण लिखें
- के-6 को अपने CI/CD पाइपलाइन में GitHub कार्यों से एकीकृत करें
- प्रोफाइलिंग उपकरणों का उपयोग करें (dotTrace, dotMemoryM SK2 के साथ kMSC3 bottlenecks ढूंढने के लिए
- भिन्न परीक्षण रणनीतियों को लागू करें
- धीमी कोड को उत्पादन तक पहुंचने से रोकने के लिए निष्पादन रीग्रेसन पता लगाने का सेटअप करें
उदाहरण के रूप में क्यों न्यूनतम ब्लॉग यह एक वास्तविक ASP है।
क्या है k6 और इसे क्यों उपयोग करें
एमएसके0 विकासकर्ताओं के लिए बनाया गया एक आधुनिक लोड परीक्षण उपकरण है
- डेवलपरपरीक्षण जावास्क्रिप्ट में लिखे जाते हैं
- CLI-firstसी. आई. एस. सी. पाइपलाइनों के लिए उपयुक्त
- हल्का वजन: एकल द्विआधारी
- सटीक: सही मापन के लिए Go में लिखा गया
- स्क्रिप्ट योग्य: जटिल परिदृश्यों के लिए पूर्ण प्रोग्रामिंग क्षमताएँ
- क्लाउड: के साथ एकीकृत कर सकता है
न्यूनतम ब्लॉग के लिए ideal है क्योंकि
- हम कैशिंग परीक्षण कर सकते हैं: k6 कैश हेडर और व्यवहार सत्यापित कर सकता है
- हम वास्तविक यातायात सिमुलित कर सकते हैं: बहुविध समवर्ती उपयोगकर्ताओं का परीक्षण करें
- हम निष्पादन दावे सत्यापित कर सकते हैं: वास्तविक प्रतिक्रिया काल मापें
- हम CI/CD के साथ एकीकृत कर सकते हैंहमारे पाइपलाइन में स्वचालित परीक्षण
- हम विशिष्ट परिदृश्यों का परीक्षण कर सकते हैं: श्रेणी फ़िल्टरिंग
स्थापित कर रहा है k6
विंडोज संस्थापना
विकल्प 1: चॉकलेट का प्रयोग करते हुए | ( | सिफारिशित
choco install k6
विकल्प 2: विनगेट का उपयोग कर
winget install k6 --source winget
विकल्प 3: मैनुअल संस्थापना
- से नवीनतम विंडोज़ संस्करण डाउनलोड करें GitHub प्रकाशन
- बाहर निकालें
k6.exeफ़ाइल - अपने पथ में निर्देशिका जोड़ें या खिसकाएँ
k6.exeपथ में पहले से ही डाइरेक्टरी पर
संस्थापना सत्यापित करें
k6 version
मैक संस्थापन
विकल्प 1: होमब्रु का उपयोग करते हुए | ( | सिफारिशित |)
brew install k6
विकल्प 2: मैकपोर्ट का प्रयोग करते हुए
sudo port install k6
विकल्प 3: मैनुअल संस्थापना
# Download and install the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-macos-amd64.zip
unzip k6-macos-amd64.zip
sudo cp k6-macos-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6
संस्थापना सत्यापित करें
k6 version
लिनक्स संस्थापन
विकल्प 1: पैकेज प्रबंधकों का उपयोग कर
के लिए डेबियन/उबुन्टू:
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
के लिए Fedora/CentOS/RHEL:
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
विकल्प 2: स्नैप का प्रयोग करते हुए
sudo snap install k6
विकल्प 3: मैनुअल संस्थापना
# Download the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-linux-amd64.tar.gz
tar -xzf k6-linux-amd64.tar.gz
sudo cp k6-linux-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6
विकल्प 4: डोकर का उपयोग कर
docker pull grafana/k6:latest
# Run a test
docker run --rm -i grafana/k6:latest run - <script.js
संस्थापना सत्यापित करें
k6 version
k6 परीक्षण एनाटोमी को समझना
परीक्षण में डुबोने से पहले हमें एक के आधारभूत संरचना को समझना चाहिए
import http from 'k6/http';
import { check, sleep } from 'k6';
// Test configuration
export const options = {
vus: 10, // Virtual users
duration: '30s', // Test duration
};
// Setup function (runs once before test)
export function setup() {
// Prepare test data
return { baseUrl: 'http://localhost:5000' };
}
// Main test function (runs for each VU)
export default function(data) {
const response = http.get(data.baseUrl);
// Assertions
check(response, {
'status is 200': (r) => r.status === 200,
'response time < 200ms': (r) => r.timings.duration < 200,
});
sleep(1); // Wait between iterations
}
// Teardown function (runs once after test)
export function teardown(data) {
// Clean up
}
प्रमुख संकल्पनाएं
- आभासी उपयोक्ता: अनुकरण समवर्ती उपयोक्ता
- अवधि: परीक्षण कितनी देर चलता है
- जाँचें: तात्पर्य जो नहीं है कि '\ जाँच रोकता
- थ्रेसहोल्ड: पास
- मैट्रिक्स: प्रतिक्रिया समय, throughput
निष्पादन परीक्षण के प्रकार
अपने अनुप्रयोग का परीक्षण करने से पहले, यह बतायें कि भार परीक्षण के पांच प्रमुख प्रकारों को समझ सकते हैं और जब प्रत्येक को प्रयोग करना है
graph TD
A[Performance Testing Types] --> B[Smoke Test]
A --> C[Load Test]
A --> D[Stress Test]
A --> E[Spike Test]
A --> F[Soak Test]
B --> B1[1-2 VUs<br/>30s-1min<br/>Basic Functionality]
C --> C1[Normal Load<br/>5-15 minutes<br/>Verify SLAs]
D --> D1[Gradual Increase<br/>10-30 minutes<br/>Find Breaking Point]
E --> E1[Sudden Spike<br/>5-10 minutes<br/>Test Recovery]
F --> F1[Normal Load<br/>Hours/Days<br/>Memory Leaks]
style B stroke:#90EE90
style C stroke:#87CEEB
style D stroke:#FFD700
style E stroke:#FF6347
style F stroke:#DDA0DD
1. धुएं परीक्षण
उद्देश्य: सुनिश्चित करें कि सिस्टम न्यूनतम लोड के तहत काम करता है
कब उपयोग करना है:
- प्रत्येक कोड परिवर्तन के बाद
- अधिक गहन परीक्षण चलाने से पहले
- CI/CD में स्वच्छता जांच के रूप में
विशेषताएँ:
- 1-2 VUs
- अल्प अवधि (30s-1minM SK2
- बुनियादी कार्यक्षमता जाँचें
2. लोड परीक्षण
उद्देश्य: अपेक्षित सामान्य लोड के तहत निष्पादन का मूल्यांकन करें
कब उपयोग करना है:
- आधारभूत निष्पादन स्थापित करना
- एसएलए को सत्यापित करने के लिए
- नियमित निष्पादन रीग्रेसन परीक्षण
विशेषताएँ:
- उपयोगकर्ताओं की वास्तविक संख्या
- स्थिर भार
- Typical duration: 5-15 minutes
3. दबाव परीक्षण
उद्देश्य: सिस्टम विच्छेद बिन्दु ढूंढें
कब उपयोग करना है:
- क्षमता सीमाओं को समझने के लिए
- bottlenecks पहचानने के लिए
- विस्तार के लिए योजना बनाना
विशेषताएँ:
- धीरे धीरे लोड बढ़ता जा रहा है
- सामान्य क्षमता से बाहर Push
- अवधि: 10-30 मिनट
4. स्पाइक परीक्षण
उद्देश्य: अचानक ट्रैफिक स्पाइक के तहत परीक्षण व्यवहार
कब उपयोग करना है:
- उत्पाद प्रक्षेपण के लिए तैयार करना
- स्वचालित परीक्षण
- फेलबैक व्यवहार सत्यापन कर रहा है
विशेषताएँ:
- अचानक भारी लोड में वृद्धि
- छोटा स्पिक अवधि
- कुल अवधि: 5-10 मिनट
सॉक टेस्ट्स
उद्देश्य: स्मृति लीक और समय के साथ विघटन खोजें
कब उपयोग करना है:
- प्रमुख प्रकाशनों से पहले
- लंबे समय तक चलाने वाली सेवाओं का परीक्षण
- संसाधन साफ करने का वैधीकरण
विशेषताएँ:
- सामान्य लोड स्तर
- विस्तारित अवधि (घण्टे या दिन
- विघटन के लिए मॉनिटर
graph LR
A[Start] --> B{Smoke Test Pass?}
B -->|No| C[Fix Issues]
C --> A
B -->|Yes| D{Load Test Pass?}
D -->|No| E[Optimize]
E --> D
D -->|Yes| F{Stress Test}
F --> G{Found Limit?}
G -->|Yes| H[Document Capacity]
G -->|No| I[Increase Load]
I --> F
H --> J{Spike Test Pass?}
J -->|No| K[Improve Resilience]
K --> J
J -->|Yes| L{Soak Test}
L --> M{Memory Stable?}
M -->|No| N[Fix Memory Leaks]
N --> L
M -->|Yes| O[Production Ready]
style O stroke:#90EE90
क्यों k6 और नहीं
इतनी अधिक लोड परीक्षण उपकरणों के साथ उपलब्ध है
Apache JMeter के विरूद्ध k6
Apache JMeter भार परीक्षण उपकरणों के अनुभवी है ( से लेकर
विशेषता |---------|----|---------| | संस्थापन एकल द्विआधारी | परीक्षण परिभाषा जावास्क्रिप्ट कोड | संसाधन उपयोग | हल्का वजन | ( | Go |) | | Heavy | CI/CD इंटीग्रेशन उत्कृष्ट (CLI-firstM SK3 | सीखने का वक्र विकासकर्ताओं के लिए आसान | प्रोटोकॉल समर्थन HTTP,WebSockets,gRPC|broader(FTP,JDBC,SMTP,etc.)|
जब JMeter का उपयोग करें
- गैर - तकनीकी परीक्षकों के लिए GUI की आवश्यकता है
- HTTP से परे प्रोटोकॉलों का परीक्षण
- टीम में पहले से ही JMeter विशेषज्ञता है
- विस्तृत प्लगइन पर्यावरण प्रणाली की आवश्यकता है
अधिकांश ASP के लिए क्यों k6 बेहतर है
- परीक्षण लिखने के लिए तेजी से (JavaScript vs XML
- हल्का संसाधन पैटप्रिंट
- बेहतर CI/CD एकीकरण
- अधिक आधुनिक विकासकर्ता अनुभव
k6 vs Locust
टिड्डी एक पाइथोन-आधारित लोड परीक्षण उपकरण है
विशेषता |---------|----|---------| | भाषा जावास्क्रिप्ट | निष्पादन Very fast (Go runtime | उपयोग की आसानता सरल जावास्क्रिप्ट | वितरित परीक्षण | k6 क्लाउड | वेब यूआई सीमित | उत्कृष्ट वास्तविक | मेट्रिक्स निर्यात कई प्रारूपें
जब स्थान पर Locust का उपयोग करना है
- पाइथन-प्रथम टीम
- निःशुल्क वितरित परीक्षण की आवश्यकता है
- परीक्षण के दौरान वास्तविक -time वेब UI चाहते हैं
- परीक्षणों में जटिल पाइथोन तर्क
अधिकांश ASP के लिए क्यों k6 बेहतर है
- सही मापन के लिए बेहतर निष्पादन
- जावास्क्रिप्ट वेब डेवलपर्स के लिए अधिक परिचित
- क्लीनर थ्रेसहोल्ड
- बेहतर Prometheus/Grafana एकीकरण
k6 विटलिंग
गाटलिंगCity name (optional, probably does not need a translation) एक उत्कृष्ट रिपोर्टिंग के साथ Scala युक्त - युक्त उपकरण है
विशेषता |---------|----|---------| | भाषा जावास्क्रिप्ट | रिपोर्टें बुनियादी (+ एक्सटेंशन | सीखने का वक्र Easy | Moderate (Scala DSL | निष्पादन Excellent | Excellent | ओपन सोर्स पूर्ण रूप से खोलें | क्लाउड सेवा | kM SK1 क्लाउड
जब गैटलिंग का उपयोग करें
- JVM/स्काला विशेषज्ञता टीम में
- विस्मयकारी निर्माण की आवश्यकता है
- जटिल HTTP परिदृश्यों का परीक्षण
- उद्यम समर्थन आवश्यकताएं
अधिकांश ASP के लिए क्यों k6 बेहतर है
- जावास्क्रिप्ट अधिक पहुँच योग्य है
- सरल सेटअप और निष्पादन
- त्वरित CI/CD जाँच के लिए बेहतर
- सरल HTTP परीक्षण के लिए अधिक सीधा
k6 एंव आर्टिलरी
हतियार सेना एक अन्य जावास्क्रिप्ट लोड परीक्षण उपकरण है
विशेषता |---------|----|---------| | परीक्षण परिभाषा जावास्क्रिप्ट कोड | निष्पादन अधिक तेजी से (जाऊ | उपयोग की आसानता कोड | के लिए बनाया गया लोड परीक्षण | दावे Excellent thresholds | Basic expectations | विस्तृतता एक्सटेंशन
बजाय कब आर्टिलिरी का उपयोग करना है
- कोड पर YAML को प्राथमिकता दें
- सॉकेट की जरूरत है
- संयुक्त लोड चाहते हैं + कार्यात्मक परीक्षण
- पहले से Node.js पारिस्थितिकी प्रणाली का उपयोग कर रहा है
अधिकांश ASP के लिए क्यों k6 बेहतर है
- अधिक सूक्ष्म मापन (Go विपरीत नोड
- बेहतर शून्य प्रणाली
- क्लीनर जावास्क्रिप्ट API
- अधिक परिपक्व और स्थिर
k6 vs wrk/wrkM SK2
उलझन एक हल्का एचटीटीपी बैंचबैंकिंग उपकरण है
विशेषता |---------|----|---------| | उपयोग की आसानता उच्च स्तरीय API | परिदृश्य समृद्ध परिदृश्य समर्थन | मैट्रिक्स व्यापक | स्क्रिप्टिंग जावास्क्रिप्ट | केस का उपयोग करें पूर्ण भार परीक्षण
के बजाय wrk का प्रयोग कब करें:
- पूर्ण न्यूनतम ऊपरी खर्च की आवश्यकता है
- त्वरित एक---off मानक
- कच्चा HTTP निष्पादन का परीक्षण कर रहा है
- कम---स्तर प्रोटोकॉल परीक्षण
अधिकांश ASP के लिए क्यों k6 बेहतर है
- परीक्षण लिखने में बहुत आसान
- बेहतर रिपोर्टिंग और मापन
- परिदृश्य समर्थन (ramp
- सीटीएमएसके0सीडी अनुकूल
के. एम. एस. सी0 vs प्लेव्राइट एम.एस. सी 1 सीप्रैस एम. ایس. सी 2 ब्राउज़र एम. इस्. सी 3 बेसेड एम. इन्. पी 4
प्लेराइट और साइप्रस ब्राउज़र स्वचालन उपकरण कभी-कभी लोड परीक्षण के लिए प्रयोग किया जाता है
विशेषता |---------|----|---------| | दृष्टिकोण प्रोटोकॉल | निष्पादन हजारों वीयू | संसाधन उपयोग | हल्के वजन | | | भारी | | ब्राउज़र | जावास्क्रिप्ट निष्पादन | नहीं | प्राथमिक उपयोग केस लोड परीक्षण
जब प्लेरैइट का उपयोग करना है?
- जावास्क्रिप्ट निष्पादन परीक्षण करने की आवश्यकता है
- ब्राउज़र रेंडरिंग सत्यापित करना होगा
- जटिल SPA का परीक्षण
- कार्यात्मक E2E परीक्षण
अधिकांश ASP के लिए क्यों k6 बेहतर है
- प्रोटोकॉल-प्रणाली परीक्षण सर्वर के लिए पर्याप्त है
- समवर्ती उपयोगकर्ताओं को 100+ सिमुलित करने की आवश्यकता है
- संसाधनों का अधिक प्रभावी उपयोग
सारांश: k6's Sweet Spot
चुनें जब आप चाहते हैं
- तीव्र-,-अटीक लोड परीक्षण
- डेवलपर-सफ़ाईल जावास्क्रिप्ट API
- उत्कृष्ट CI/CD सम्मिलन
- प्रोटोकॉल
- समृद्ध परिदृश्य समर्थन
- अच्छे पारिस्थितिकी के साथ आधुनिक उपकरण
- हल्के वजन संसाधन उपयोग
k6 के लिए पूर्ण है
- एपीआई और वेब सेवाएं
- सर्वर-साइड रेंडरेड एप्लिकेशन
- CI/CD निष्पादन गेट
- विकासकर्ता-प्रचालित निष्पादन परीक्षण
- क्लाउड
विकल्पों पर विचार करें यदि आप की जरूरत है
- ब्राउज़र प्लेराइट)
- HTTP से परे विस्तृत प्रोटोकॉल समर्थन (use जेमेटर)
- निःशुल्क वितरित परीक्षण (use टिड्डी)
- Beautiful built-in reports (use गाटलिंगCity name (optional, probably does not need a translation))
- गैर -तकनीकी परीक्षकों के लिए GUI जेमेटर)
अगला कदम
अब आप समझ रहे हैं कि k6 क्या है
के लिए जारी रखें भाग 2: व्यावहारिक कार्यान्वयन जहां हम कवर करेंगे
- अपने परीक्षण वातावरण सेटअप कर रहा है
- लेखन धुएं, भार, तनावM SK2 स्पाइकMSC3 और सोक परीक्षण
- कैश व्यवहार का परीक्षण कर रहा है
- वास्तविक उपयोगकर्ता यात्रा सिमुलेशन
- GitHub कार्यों के साथ CI/CD एकीकरण
- निष्पादन रिग्रेसन पता लगाना
- dotTrace और dotMemory के साथ प्रोफ़ाइलिंग
- सर्वोत्तम प्रथाएं और त्रुटिमोचन
संसाधन
k6 दस्तावेज़
- आधिकारिक k6docs पूर्ण k6 दस्तावेज़
- जावास्क्रिप्ट API सभी उपलब्ध APIs
- उदाहरण - उदाहरण परीक्षण स्क्रिप्ट
- मेट्रिक्स k6 - मापन को समझना
- k6 शून्य - सेटिंग पास
वैकल्पिक लोड परीक्षण औज़ार
- Apache JMeter आधारित लोड परीक्षण
- टिड्डी पर आधारित लोड परीक्षण
- गाटलिंगCity name (optional, probably does not need a translation) - Scala-आधारित लोड परीक्षण
- हतियार सेना - नोड
- उलझन - HTTP बैकेंडिंग उपकरण
- प्लेराइट ब्राउज़र स्वचालन परीक्षण