Prendre rendez-vous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. Tests de charge avec k6 : valider la performance de votre infrastructure

Performance
DevOps
Web

Tests de charge avec k6 : valider la performance de votre infrastructure

2 mars 2026

5 min de lecture

Sommaire
Sommaire
Pourquoi k6 ?
Premiers pas : écrire un test
Métriques et seuils de performance
Scénarios avancés et stages
Intégration Grafana et monitoring
Comparaison : k6 vs JMeter vs Gatling
Perspectives et ressources
Sources
Conclusion

Sommaire

  1. Pourquoi k6 ?
  2. Premiers pas : écrire un test
  3. Métriques et seuils de performance
  4. Scénarios avancés et stages
  5. Intégration Grafana et monitoring
  6. Comparaison : k6 vs JMeter vs Gatling
  7. Perspectives et ressources
  8. Conclusion

Pourquoi k6 ?

k6, édité par Grafana Labs, est un outil de test de charge open-source conçu pour les DevOps et les développeurs modernes. Contrairement aux outils GUI lourds, k6 privilégie une approche code-first en JavaScript ES6 et possède une philosophie CLI native.

Points forts
  • Écrit en Go → Perfs élevées, pas de dépendances JVM
  • Scripts en JavaScript → Accessibilité pour les équipes web
  • Intégration Grafana/InfluxDB → Dashboard et alertes en temps réel
  • k6 Cloud → Tests distribués sur infrastructure Grafana
  • Extensions xk6 → Connecteurs custom (Kafka, MQTT, gRPC…)

Adapté pour valider la résilience de votre infrastructure sous charge, qu'elle soit on-premise, cloud ou hybride.


Premiers pas : écrire un test

Installation
# macOS
brew install k6

# Linux
sudo apt-get install k6

# Vérification
k6 version
Test basique
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
	stages: [
		{ duration: '30s', target: 10 }, // Ramp-up à 10 VUs
		{ duration: '2m', target: 10 }, // Steady à 10 VUs
		{ duration: '30s', target: 0 }, // Ramp-down
	],
	thresholds: {
		http_req_duration: ['p(95)<500'], // p95 < 500ms
		http_req_failed: ['rate<0.05'], // < 5% d'erreurs
	},
};

export default function () {
	const res = http.get('https://api.example.com/users');

	check(res, {
		'status 200': (r) => r.status === 200,
		'response time < 400ms': (r) => r.timings.duration < 400,
	});

	sleep(1);
}
Lancer le test
k6 run test.js

# Avec cloud
k6 run --cloud test.js

Métriques et seuils de performance

Métriques clés
MétriqueSens
VUsVirtual Users actifs
RPSRequêtes par seconde
http_req_durationLatence requête (p50/p95/p99)
http_req_failedTaux d'erreurs (4xx, 5xx, timeouts)
group_durationTemps groupe (scénarios complexes)
Thresholds (seuils)
export const options = {
	thresholds: {
		http_req_duration: ['p(95)<500', 'p(99)<1000'],
		http_req_failed: ['rate<0.01'],
		checks: ['rate>0.95'], // Validations OK > 95%
	},
};

Si un seuil échoue, k6 sort avec code d'erreur → CI/CD compatible.

Checks (assertions)
check(res, {
	'authentification OK': (r) => r.status === 200,
	'payload < 100KB': (r) => r.body.length < 100000,
	'header Date présent': (r) => r.headers['Date'] != null,
});

Scénarios avancés et stages

Stages : Ramp-up / Steady / Ramp-down
export const options = {
	stages: [
		{ duration: '1m', target: 50 }, // Montée progressive
		{ duration: '5m', target: 50 }, // Charge stable
		{ duration: '30s', target: 100 }, // Pic surprise
		{ duration: '5m', target: 100 }, // Tenue du pic
		{ duration: '1m', target: 0 }, // Descente
	],
};
Scénarios et groupes
import { group } from 'k6';

export default function () {
	group('Auth Flow', function () {
		const res = http.post('https://api.example.com/auth', {
			username: 'user@example.com',
			password: 'secret',
		});
		check(res, { 'login OK': (r) => r.status === 200 });
	});

	group('Dashboard', function () {
		const res = http.get('https://api.example.com/dashboard');
		check(res, { 'dashboard loaded': (r) => r.status === 200 });
	});

	sleep(2);
}
Tags (pour filtrer/regrouper)
http.get('https://api.example.com/users', {
	tags: { name: 'GetUsers', category: 'api' },
});

Intégration Grafana et monitoring

Output JSON
k6 run test.js --out json=results.json

Exploitable en post-traitement ou versioning pour historique.

InfluxDB + Grafana
# k6 → InfluxDB
k6 run test.js \
  --out influxdb=http://localhost:8086/k6 \
  -e INFLUXDB_ORGANIZATION=myorg \
  -e INFLUXDB_BUCKET=k6

Dashboards Grafana pré-construits : latences, erreurs, VUs temps-réel.

xk6-prometheus
# Build avec xk6
xk6 build --with github.com/grafana/xk6-prometheus

# Test avec Prometheus
./k6 run test.js --out prometheus=http://localhost:9090

Comparaison : k6 vs JMeter vs Gatling

Critèrek6JMeterGatling
LangageJavaScriptJava/XML GUIScala/Java
ModèleCode-first, CLIGUI, scriptableCode-first
RessourcesLégères (Go)Lourdes (JVM)Modérées (JVM)
Courbe d'apprentissageBasseMoyenneHaute
Cloud distribuék6 CloudPlugin JMeter CloudGatling Enterprise
Support protocolesHTTP, WS, gRPCHTTP, FTP, MQTT, JMS…HTTP, WS, SSE
Écosystèmexk6 extensionsPlugins diversGatling Academy

k6 gagne pour les équipes DevOps/Web modernes. JMeter pour beaucoup de protocoles. Gatling pour benchmarks poussés.


Perspectives et ressources

Approfondir la culture performance :

  • Monitoring infrastructure avec Prometheus et Grafana → Couplage parfait avec k6 Cloud
  • Linux performance : tuning kernel et OS → Optimiser vos serveurs testés
  • Caching HTTP : nginx, Redis, CDN → Réduire charge serveur pré-test

Sources

  • k6.io – Documentation officielle
  • Grafana Docs – k6 Integrations
  • xk6 Extensions

Conclusion

k6 valide la tenue de votre infrastructure sous charge réaliste. Ses tests en JavaScript, sa philosophie CLI et son intégration Grafana en font un choix pragmatique et moderne.

Que vous opériez une infrastructure cloud, on-premise ou hybride, les tests de charge k6 servent à :

✓ Valider vos SLA (99.9 %+) ✓ Détecter les goulots avant la production ✓ Intégrer dans la CI/CD (thresholds automatiques) ✓ Monitorer en temps réel (Grafana)

N'attendez pas une panne : testez votre performance aujourd'hui.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires

CDN : mise en place et optimisation pour vos applications web
Web
Performance
Infrastructure

CDN : mise en place et optimisation pour vos applications web

Guide pratique CDN : architecture, configuration cache, invalidation, headers HTTP, monitoring et intégration avec votre infrastructure existante.

27 févr. 2026

Lire plus

Nginx rate limiting : protéger vos APIs et applications web
Web
Sécurité
Performance

Nginx rate limiting : protéger vos APIs et applications web

Configurez le rate limiting Nginx pour protéger vos APIs : limit_req, limit_conn, zones mémoire, burst, nodelay et stratégies par endpoint.

23 févr. 2026

Lire plus

Performance web : HTTP/2 vs HTTP/3, benchmarks réels et migration
Performance
Réseau
Web

Performance web : HTTP/2 vs HTTP/3, benchmarks réels et migration

Comparez HTTP/2 et HTTP/3 (QUIC) avec benchmarks de performance réels : latence, throughput, pertes de paquets. Guide complet de migration Nginx et Caddy.

16 janv. 2026

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Prendre rendez-vousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr