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
Tuesday, 02 December 2025
Η εφαρμογή σας λειτουργεί τέλεια στο laptop σας. Οι δοκιμές μονάδων περνούν. Οι δοκιμές ολοκλήρωσης περνούν. Αναπτύσσετε στην παραγωγή, και ξαφνικά όλα αλέσουν σε μια στάση. 500 πραγματικοί χρήστες χτύπησε την αρχική σας σελίδα ταυτόχρονα, και ο διακομιστής σας αρχίζει να επιστρέφει 503 λάθη.
Αυτό είναι το εφιαλτικό σενάριο που κάθε προγραμματιστής φοβάται, αλλά οι περισσότεροι δεν κάνουν τεστ. Η δοκιμή απόδοσης δεν είναι προαιρετική - είναι η διαφορά μεταξύ μιας επιτυχημένης εκτόξευσης και μιας σελίδας έκτακτης ανάγκης 3 AM. Αυτός ο οδηγός δύο μερών θα σας δείξει ακριβώς πώς να αποτρέψετε αυτό το σενάριο χρησιμοποιώντας το k6, το σύγχρονο εργαλείο δοκιμής φορτίου που είναι αρκετά ισχυρό για εφαρμογές επιχειρήσεων αλλά αρκετά απλό για να τρέξει στον αγωγό CI / CD σας.
Αυτό είναι Μέρος 1 μιας σειράς δύο μερών για τη δοκιμή φορτίου με k6:
Δοκιμή απόδοσης είναι ζωτικής σημασίας για οποιαδήποτε παραγωγή ASP.NET Core εφαρμογή. Είτε φτιάχνετε ένα απλό blog, μια πολύπλοκη αρχιτεκτονική μικρουπηρεσίας, ή μια εφαρμογή επιχείρησης, θα πρέπει να ξέρετε πώς συμπεριφέρεται η εφαρμογή σας υπό φορτίο. Θα χειριστεί 100 ταυτόχρονη χρήστες; 1.000; Πού είναι τα εμπόδια; Δουλεύει πραγματικά η στρατηγική αποθήκευσης σας;
Αυτός ο περιεκτικός οδηγός σας δείχνει πώς να φορτώσετε τις εφαρμογές ASP.NET Core χρησιμοποιώντας k6 - ένα από τα πιο ισχυρά εργαλεία δοκιμών ανοικτού φορτίου. MinimalBlog ως το παράδειγμα εφαρμογής μας (ένα απλό blog με βάση το markdown με μνήμη και caching εξόδου), οι τεχνικές και τα πρότυπα που εμφανίζονται εδώ ισχύουν για οποιαδήποτε εφαρμογή ASP.NET Core.
Μέχρι το τέλος αυτής της σειράς δύο μερών, θα ξέρετε πώς:
Γιατί το MinimalBlog ως παράδειγμα; Είναι μια πραγματική ASP.NET Core 9.0 εφαρμογή με κοινά πρότυπα: Razor Pages, αποθήκευση μνήμης, αποθήκευση εξόδου, αρχείο I/O, και επεξεργασία σήμανσης. Οι προσεγγίσεις δοκιμής που θα μάθετε ισχύουν εξίσου για τις εφαρμογές MVC σας, Web APIs, εφαρμογές Blazor, ή minimal APIs.
k6 είναι ένα σύγχρονο εργαλείο δοκιμής φορτίου κατασκευασμένο για προγραμματιστές. Σε αντίθεση με παλαιότερα εργαλεία όπως JMeter ή LoadRunner, k6 είναι:
Για το MinimalBlog, το k6 είναι ιδανικό επειδή:
Επιλογή 1: Χρήση σοκολάτες (συνιστάται)
choco install k6
Επιλογή 2: Χρήση του Winget
winget install k6 --source winget
Επιλογή 3: Χειροκίνητη εγκατάσταση
k6.exe αρχείοk6.exe σε έναν κατάλογο που είναι ήδη στο PATHΕπιβεβαίωση εγκατάστασης:
k6 version
Επιλογή 1: Χρήση του Homebrew (Συνιστάται)
brew install k6
Επιλογή 2: Χρήση MacPorts
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: Χρήση Διαχειριστών Πακέτων
Για Debian/Ubuntu:
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: Χρήση του Snap
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
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
}
Βασικές έννοιες:
Πριν από τη δοκιμή της εφαρμογής σας, ας κατανοήσουμε τους πέντε κύριους τύπους δοκιμών φορτίου και πότε να χρησιμοποιήσετε το καθένα:
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
Αντικείμενο: Επαληθεύστε το σύστημα λειτουργεί με ελάχιστο φορτίο
Πότε να χρησιμοποιήσετε το φάρμακο:
Χαρακτηριστικά:
Αντικείμενο: Εκτίμηση των επιδόσεων υπό αναμενόμενο κανονικό φορτίο
Πότε να χρησιμοποιήσετε το φάρμακο:
Χαρακτηριστικά:
Αντικείμενο: Βρείτε το σημείο διακοπής του συστήματος
Πότε να χρησιμοποιήσετε το φάρμακο:
Χαρακτηριστικά:
Αντικείμενο: Δοκιμαστική συμπεριφορά κάτω από ξαφνικές αιχμές κυκλοφορίας
Πότε να χρησιμοποιήσετε το φάρμακο:
Χαρακτηριστικά:
Αντικείμενο: Βρείτε διαρροές μνήμης και υποβάθμιση με την πάροδο του χρόνου
Πότε να χρησιμοποιήσετε το φάρμακο:
Χαρακτηριστικά:
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; Ας συγκρίνουμε το k6 με τις δημοφιλείς εναλλακτικές λύσεις:
Απάτσι JMeter είναι βετεράνος των εργαλείων δοκιμών φορτίου (από το 1999).
Χαρακτηριστικό k6 JMeter |---------|----|---------| | Εγκατάσταση Το μονό δυαδικό, χωρίς εξαρτήσεις απαιτεί Java, βαρύτερη εγκατάσταση | Ορισμός δοκιμής JavaScript code > XML ή GUI | Χρήση πόρων Ελαφρύ (Πήγαινε) Βαρύ (Ιάβα) | Ενσωμάτωση CI/CD □ Εξαιρετικό (CLI-πρώτο) □ Απαιτεί plugins □ | Μάθηση καμπύλης Easy για τους προγραμματιστές Steeper, GUI-εστιασμένο | Υποστήριξη πρωτοκόλλου □ HTTP, WebSockets, gRPC □ Broader (FTP, JDBC, SMTP κ.λπ.)
Πότε να χρησιμοποιήσετε το JMeter αντ 'αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
ΛόκουστCity name (optional, probably does not need a translation) είναι ένα Python-based εργαλείο δοκιμής φορτίου, δημοφιλές στα καταστήματα Python.
Χαρακτηριστικό ~ k6 ~ Locust ~ |---------|----|---------| | Γλώσσα Η JavaScript Python | Επιδόσεις Πολύ γρήγορος (Πήγαινε να τρέξεις) Πιο αργός (Python GIL) | Ευκολία χρήσης Απλή JavaScript Πυθονική, εύκολη | Κατανεμημένη δοκιμή K6 Cloud (πληρωμένο) □ Ενσωματωμένο (δωρεάν) | Web UI □ Περιορισμένη > Εξαιρετική σε πραγματικό χρόνο UI | Εξαγωγή μετρικού Πολλές μορφές CSV, web UI
Πότε να χρησιμοποιήσετε το Locust αντ 'αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
ΓκάτλινγκCity name (optional, probably does not need a translation) είναι ένα εργαλείο βασισμένο στο Scala με εξαιρετική αναφορά.
Περιγραφή Χαρακτηριστικό K6 Γκάτλινγκ |---------|----|---------| | Γλώσσα Η JavaScript Scala/Java | Εκθέσεις Βασική (+ extensions) Όμορφη ενσωματωμένη HTML εκθέσεις | Μάθηση καμπύλης Εύκολα, μεσαία (Scala DSL) | Επιδόσεις Θαυμάσια. Εξαιρετικά. | Άνοιγμα πηγής Ανοιχτό με πρόσθετα επιχειρήσεων | Cloud Service Κ6 Κλάουντ Γκάτλινγκ Εντερπράιζ
Πότε να χρησιμοποιήσετε το Gatling αντ 'αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
Πυροβολικό είναι ένα άλλο εργαλείο δοκιμής φορτίου JavaScript.
Το πυροβολικό του Κ6 |---------|----|---------| | Ορισμός δοκιμής JavaScript code YAML + JS αγκίστρια | Επιδόσεις Πιο γρήγορα (Πήγαινε) Πιο αργά (Node.js) | Ευκολία χρήσης Ο κωδικός βασίζεται σε YAML config-based | Φτιαγμένο για Δοκιμασία φορτίου Φόρτωση + Λειτουργική δοκιμή | Δέσμες Αξιόπιστα κατώτατα όρια Βασικές προσδοκίες | Εκτεταμένη δυνατότητα Επιμηκύνει τις επεκτάσεις
Πότε να χρησιμοποιήσετε το πυροβολικό αντ' αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
wrk είναι ένα ελαφρύ εργαλείο συγκριτικής αξιολόγησης HTTP.
Χαρακτηριστικά γνωρίσματος k6 wrk |---------|----|---------| | Ευκολία χρήσης API Υψηλού Επιπέδου API Low-level C + Lua | ΣενάριαCity name (optional, probably does not need a translation) Πλούσιο σενάριο υποστήριξης μόνο βασικό HTTP | Μετρικός Ολοκληρωτικός πίνακας Βασικά στοιχεία | Σενάριο Η JavaScript Lua | Χρήση περίπτωσης Δοκιμάστε το πλήρες φορτίο. Γρήγορα σημεία αναφοράς.
Πότε να χρησιμοποιήσετε το wrk αντ 'αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
Playwright και ΚυπαρίσσιCity name (optional, probably does not need a translation) είναι εργαλεία αυτοματισμού browser που χρησιμοποιούνται μερικές φορές για τη δοκιμή φορτίου.
Περιγραφή Χαρακτηριστικό K6 Playwright/Cypress & Playwright |---------|----|---------| | Προσέγγιση Αληθινός περιηγητής σε επίπεδο πρωτοκόλλου | Επιδόσεις Χιλιάδες VUs Δεκάδες προγράμματα περιήγησης | Χρήση πόρων Ασθενής Βαρύς (browsers) | Εκτέλεση JavaScript Όχι, ναι, ναι, ναι. | Υπόθεση πρωτογενούς χρήσης Δοκιμάστε τη λειτουργική δοκιμή φορτίου E2E.
Πότε να χρησιμοποιήσετε το Playwright/Cypress αντ' αυτού:
Γιατί το k6 είναι καλύτερο για τις περισσότερες εφαρμογές ASP.NET Core:
Επιλέξτε το k6 όταν θέλετε:
k6 είναι ιδανικό για:
Σκεφτείτε εναλλακτικές λύσεις αν χρειάζεστε:
Τώρα που καταλαβαίνετε τι είναι το k6, πώς να το εγκαταστήσετε, τα είδη των διαθέσιμων δοκιμών απόδοσης, και γιατί το k6 είναι μια μεγάλη επιλογή για τις εφαρμογές ASP.NET Core, είστε έτοιμοι να ξεκινήσετε να γράφετε πραγματικές δοκιμές.
Συνεχίστε να Μέρος 2: Πρακτική εφαρμογή όπου θα καλύψουμε:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.