PERFORMANCE SOUS CHARGE
Trouver le goulot d'étranglement.
Vérifier l'accélération
Nous optimisons les requêtes, le code serveur et la mise en cache selon les résultats des mesures. Nous vérifions les changements sur un scénario de charge répétable : temps de réponse, erreurs et consommation de ressources avant et après.
TÂCHE
SCÉNARIO
DONNÉES
VÉRIFICATION
LANCEMENT
TRANSFERT
au lancement et à la transmission
MESURES
POINTS DE BLOCAGE
VÉRIFICATION DES CHANGEMENTS
réalisés
du studio
modèles
Premier Partner
marketing, analytique
L'accélération commence de la mesure
Une réponse lente peut être liée à une requête de base de données, à une API externe, à un blocage, à la mémoire ou à une file d'attente de tâches. Nous collectons d'abord des données sur des scénarios réels et isolons les opérations qui affectent les utilisateurs et l'entreprise.
Nous fixons l'état initial : volume de données, configuration, profil de charge et répartition du temps de réponse. Nous ne regardons pas seulement la moyenne, mais aussi les requêtes lentes, le taux d'erreur et la stabilité du système lors de la montée en charge.
Nous apportons des modifications par priorité : index, requête, structure d'accès aux données, cache ou code. Nous examinons le passage à l'échelle après diagnostic. Le résultat est confirmé par un nouveau test dans des conditions comparables et les limitations sont décrites.
- Mesures initiales et scénarios approuvés
- Plans de requêtes et profils de code serveur
- Cache avec règles de mise à jour et de nettoyage
- Test répétable avant et après les modifications
- Rapport avec résultats et contraintes
Scénario
La charge reflète les actions des utilisateurs
Délai
Nous évaluons la distribution du temps de réponse
Erreurs
L'accélération ne doit pas masquer les défaillances
Ressources
Nous vérifions le CPU, la mémoire, le disque et les connexions
Le cache doit rester cohérent
Nous définissons la durée de vie, l'invalidation et le comportement en cas d'indisponibilité du cache. Les données des utilisateurs sont séparées par contexte d'accès ; une valeur obsolète ne doit pas modifier de manière imperceptible une décision importante.
Optimisation avec effet vérifiable
Nous ne promettons pas la même accélération à tous les projets : le résultat dépend de la limitation trouvée.
Priorité par impact
Nous commençons par les opérations qui créent une file d'attente ou un retard dans le scénario clé. Nous vérifions si le problème a diminué pour l'utilisateur, et pas seulement le temps d'une requête individuelle.
Tests comparables
Nous conservons le profil de charge, les données et l'état du cache. Nous comparons le temps de réponse, les erreurs et les ressources dans les mêmes conditions ; nous montrons séparément le cache réchauffé et froid.
Architecture selon les besoins
La réplication et la séparation des flux ajoutent des contraintes de cohérence et des coûts opérationnels. Nous les choisissons après évaluation, sans les utiliser comme une caractéristique obligatoire de la haute charge (Highload).
D'un scénario lent vers un résultat confirmé
Chaque hypothèse est vérifiée par la mesure et un test répété.
Mesures initiales
Nous collectons les journaux, les métriques et les opérations clés. Nous convenons des accès et des limites de diagnostic du projet de travail.
Localisation de la cause
Nous vérifions les plans de requêtes, les profils de code et les attentes des services externes. Nous choisissons les goulots d'étranglement ayant une influence notable.
Plan de modifications
Nous convenons des priorités, des critères attendus et du scénario de test. Nous évaluons les risques de migration et la possibilité de retour arrière.
Optimisation
Nous modifions les requêtes, les index, les appels de données ou le cache selon le volume choisi. Nous vérifions l'exactitude du résultat.
Contrôle de la charge
Nous lançons le test convenu sur l'environnement de test préparé. Nous augmentons la charge progressivement et définissons les conditions d'arrêt.
Rapport et lancement
Nous comparons les résultats avant et après, nous montrons les limites. Nous publions les changements selon le plan et vérifions les métriques opérationnelles.
Requêtes, code et scénarios de charge
L'ensemble des outils dépend de l'application et du goulot d'étranglement identifié.
Base de données
Plans d'exécution, requêtes lentes et statistiques SGBD. Nous évaluons les changements d'index et de schéma ainsi que leur impact sur l'écriture.
Profils et cache
Profileur de la pile appropriée et Redis si nécessaire. Nous n'activons pas de diagnostics lourds sur le serveur de production sans accord.
Tests de charge
k6 ou un autre outil approprié. Nous définissons des scénarios, des métriques, des seuils d'erreur et des conditions d'arrêt ; le nombre de requêtes en soi ne caractérise pas la qualité.
— COÛT
Tarifs
sur l'optimisation Highload
Des requêtes SQL lentes à l'architecture de montée en charge. La composition des travaux et le profil du test sont fixés après diagnostic.
| Composition des travaux | Optimisation SQL et des index Requêtes lentes et paramètres de base approuvés 85 000 ₽ jusqu'à 7 jours | POPULAIRE Mise en cache et code Profilage et mise en cache des scénarios clés 150 000 ₽ jusqu'à 14 jours | Architecture Highload Mise à l'échelle et segmentation des flux selon les besoins à partir de 260 000 ₽ à partir de 20 jours |
|---|---|---|---|
|
Requêtes SQL
|
Jusqu'à 30 requêtes validées | Jusqu'à 70 requêtes et mise en cache | Requêtes et structure selon la mission |
|
Redis
|
Non inclus | Mise en cache de base sur demande | Cache distribué selon l'architecture |
|
Profilage de code
|
Non inclus | Opérations clés | Goulots d'étranglement et refactoring selon les spécifications |
|
Réplication de base
|
Non inclus | Non inclus | Lecture / écriture selon la tâche |
|
Test de charge
|
Vérification des requêtes sélectionnées | Plan de test jusqu'à 1 000 RPS avec préparation du banc d'essai | Plan de test jusqu'à 10 000 RPS après évaluation du banc de test |
|
Paramètres d'environnement
|
SGBD selon les résultats du diagnostic | SGBD et mémoire selon la mission | Application, serveur et SGBD selon la mission |
Coût des travaux dans le volume convenu. Les ressources du stand, les licences et les serveurs sont payés séparément. Le RPS dans le tableau se rapporte à la charge de test prévue et non à la bande passante garantie du projet. Le délai dépend de l'accès, des données et de la complexité des changements.
— QUESTIONS ET RÉPONSES
Tout ce qui est important
avant le lancement
Composition des travaux, ressources initiales, ordre d'approbation et conditions de lancement.
-
Comment comprendre qu'une optimisation est nécessaire ?
En cas de dégradation du temps de réponse, d'augmentation des erreurs, des files d'attente ou de la consommation des ressources dans les scénarios importants. Nous commençons par les mesures et la cause ; la taille de la base de données ne détermine pas en soi la nécessité d'une refonte. -
Est-il suffisant d'acheter un serveur plus puissant ?
Parfois, les ressources limitent réellement le système. Mais les requêtes, les blocages et le travail superflu peuvent maintenir le problème sur un serveur plus grand. Nous comparons les options après les mesures et prenons en compte le coût d'exploitation. -
Quand le sharding est-il nécessaire ?
Lorsque les exigences en termes de volume et de charge ne peuvent pas être raisonnablement couvertes par des solutions plus simples. Avant de diviser les données, nous évaluons la clé de répartition, les opérations entre les parties, la migration et la maintenance. -
Le test est-il sûr pour le site de production ?
Le test principal est effectué sur un environnement préparé avec des données cohérentes. Les vérifications en production nécessitent une fenêtre séparée, des restrictions et des conditions d'arrêt. Les paiements réels et les notifications de masse sont désactivés dans le scénario de test. -
Comment l'accélération est-elle confirmée ?
Nous répétons le scénario convenu avec des données et des paramètres comparables. Nous montrons la distribution du temps de réponse, les erreurs et les ressources avant et après. Nous ne faisons pas de promesses universelles telles qu'une accélération par 100.