Voyageur au sommet d'une montagne enneigée devant la lune

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.

Forfaits et coût

TÂCHE
SCÉNARIO
DONNÉES

VÉRIFICATION
LANCEMENT
TRANSFERT

6 étapes des exigences
au lancement et à la transmission

MESURES
POINTS DE BLOCAGE
VÉRIFICATION DES CHANGEMENTS

700+projets
réalisés
2011année de lancement
du studio
40+niches et business-
modèles
2023statut Google
Premier Partner
Développement,
marketing, analytique
Comment nous travaillons

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.

Approche

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).

Processus

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é.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

Pratique

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 Requêtes et structure selon la mission
Redis
Non inclus Cache distribué selon l'architecture
Profilage de code
Non inclus Goulots d'étranglement et refactoring selon les spécifications
Réplication de base
Non inclus Lecture / écriture selon la tâche
Test de charge
Vérification des requêtes sélectionnées 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 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.