{"id":15647,"date":"2025-11-29T11:51:01","date_gmt":"2025-11-29T10:51:01","guid":{"rendered":"https:\/\/webhosting.de\/io-wait-verstehen-speicher-engpass-beheben-optimization\/"},"modified":"2025-11-29T11:51:01","modified_gmt":"2025-11-29T10:51:01","slug":"comprendre-lattente-de-s-resoudre-le-goulot-detranglement-de-la-memoire-optimisation","status":"publish","type":"post","link":"https:\/\/webhosting.de\/fr\/io-wait-verstehen-speicher-engpass-beheben-optimization\/","title":{"rendered":"Comprendre l'attente E\/S : quand un stockage lent ralentit le serveur"},"content":{"rendered":"<p><strong>H\u00e9bergement I\/O Wait<\/strong> ralentit les applications lorsque le processeur attend des disques lents et que les requ\u00eates restent bloqu\u00e9es dans le sous-syst\u00e8me de stockage. Je vais vous montrer comment identifier les temps d'attente d'E\/S, classer clairement les goulots d'\u00e9tranglement et <strong>Vitesse de stockage du serveur<\/strong> augmenter de mani\u00e8re cibl\u00e9e.<\/p>\n\n<h2>Points centraux<\/h2>\n\n<ul>\n  <li><strong>Attente E\/S<\/strong> indique que le processeur attend des supports de donn\u00e9es lents.<\/li>\n  <li><strong>Valeurs mesur\u00e9es<\/strong> La latence, les IOPS et la profondeur de la file d'attente sont d\u00e9terminants pour la vitesse.<\/li>\n  <li><strong>Mises \u00e0 niveau<\/strong> sur SSD\/NVMe et RAID 10 r\u00e9duisent consid\u00e9rablement les temps d'attente.<\/li>\n  <li><strong>Mise en cache<\/strong> dans RAM, Redis ou Memcached soulage le stockage.<\/li>\n  <li><strong>Suivi<\/strong> iostat\/iotop permet de d\u00e9tecter rapidement les goulots d'\u00e9tranglement.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/server-io-wait-verstehen-6932.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>I\/O-Wait expliqu\u00e9 bri\u00e8vement et clairement<\/h2>\n\n<p>Lorsque la valeur iowait augmente, le CPU attend un <strong>support de donn\u00e9es<\/strong> au lieu de calculer. Cette situation se produit lorsque des processus lancent des op\u00e9rations de lecture ou d'\u00e9criture et que le lecteur ne r\u00e9pond pas assez rapidement. Je fais la distinction entre les goulots d'\u00e9tranglement CPU et les goulots d'\u00e9tranglement E\/S : une utilisation \u00e9lev\u00e9e du CPU sans iowait indique une charge de calcul, des valeurs iowait \u00e9lev\u00e9es indiquent un manque de vitesse de la m\u00e9moire. Les files d'attente s'allongent, ce qui <strong>Latence<\/strong> augmente \u00e0 chaque requ\u00eate, et le d\u00e9bit effectif diminue. Plus le nombre de requ\u00eates d'E\/S simultan\u00e9es est \u00e9lev\u00e9, plus le ralentissement du stockage affecte chaque application.<\/p>\n\n<h2>Sympt\u00f4mes typiques sur le serveur<\/h2>\n\n<p>Je remarque d'abord les probl\u00e8mes d'E\/S lorsque le syst\u00e8me ralentit. <strong>Bases de donn\u00e9es<\/strong> et des temps de r\u00e9ponse API longs. Les processus Web se bloquent lors de l'acc\u00e8s aux fichiers ou aux journaux, les t\u00e2ches cron prennent plus de temps que pr\u00e9vu et les charges de travail par lots sont report\u00e9es \u00e0 la nuit. La surveillance montre une profondeur de file d'attente \u00e9lev\u00e9e et des temps d'attente importants par E\/S. Le CPU semble \u201c libre \u201d, mais les requ\u00eates sont trait\u00e9es lentement car le <strong>plaques<\/strong> ne parviennent pas \u00e0 suivre. C'est pr\u00e9cis\u00e9ment l\u00e0 qu'un diagnostic pr\u00e9cis portant sur la latence, les IOPS et la longueur des files d'attente s'av\u00e8re utile.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/serverleistung_meeting_2048.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bien interpr\u00e9ter les indicateurs de performance<\/h2>\n\n<p>Je mesure iowait, la latence, les IOPS, le d\u00e9bit et <strong>Profondeur de la file d'attente<\/strong> avec des outils tels que iostat, iotop, vmstat et sar. Je m'int\u00e9resse particuli\u00e8rement aux valeurs distinctes pour la lecture et l'\u00e9criture, car les chemins d'\u00e9criture pr\u00e9sentent souvent des goulots d'\u00e9tranglement diff\u00e9rents de ceux des acc\u00e8s en lecture. J'observe les 95e et 99e centiles de la latence, et pas seulement la valeur moyenne. M\u00eame les petits fichiers avec de nombreux acc\u00e8s al\u00e9atoires se comportent diff\u00e9remment des grands flux s\u00e9quentiels. Je mets ces m\u00e9triques en relation les unes avec les autres afin de mettre en \u00e9vidence les v\u00e9ritables goulots d'\u00e9tranglement.<\/p>\n\n<p>Le tableau suivant m'aide \u00e0 classer les valeurs mesur\u00e9es et \u00e0 prendre rapidement des d\u00e9cisions :<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>M\u00e9triques<\/strong><\/th>\n      <th><strong>valeur indicative<\/strong><\/th>\n      <th><strong>Remarque<\/strong><\/th>\n      <th><strong>Prochaine \u00e9tape<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>iowait (%)<\/td>\n      <td>&gt; 10\u201315 % pendant quelques minutes<\/td>\n      <td>Le CPU attend clairement l'E\/S<\/td>\n      <td>V\u00e9rifier le stockage, augmenter la m\u00e9moire cache<\/td>\n    <\/tr>\n    <tr>\n      <td>r_await \/ w_await (ms)<\/td>\n      <td>&gt; 5 ms SSD, &gt; 1 ms NVMe<\/td>\n      <td>Haute <strong>Latence<\/strong> par op\u00e9ration<\/td>\n      <td>Raccourcir le chemin d'acc\u00e8s E\/S, tester NVMe<\/td>\n    <\/tr>\n    <tr>\n      <td>avgqu-sz<\/td>\n      <td>&gt; 1 permanent<\/td>\n      <td>La file d'attente s'allonge<\/td>\n      <td>R\u00e9duire le parall\u00e9lisme, utiliser le cache<\/td>\n    <\/tr>\n    <tr>\n      <td>IOPS<\/td>\n      <td>Nettement en dessous des attentes<\/td>\n      <td>L'appareil est limit\u00e9<\/td>\n      <td>V\u00e9rifier le planificateur\/la mise en cache\/le RAID<\/td>\n    <\/tr>\n    <tr>\n      <td>D\u00e9bit (Mo\/s)<\/td>\n      <td>Fluctue fortement<\/td>\n      <td>Perturbateur <strong>Spikes<\/strong> visible<\/td>\n      <td>D\u00e9finir la QoS, planifier les t\u00e2ches en arri\u00e8re-plan<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Bien identifier les causes<\/h2>\n\n<p>Je constate souvent qu'il y a trop de <strong>Demandes<\/strong> solliciter le m\u00eame support de donn\u00e9es. Des lecteurs inadapt\u00e9s (HDD au lieu de SSD\/NVMe) sont alors confront\u00e9s \u00e0 des applications bavardes avec de nombreuses petites op\u00e9rations d'E\/S. De mauvais index dans les bases de donn\u00e9es aggravent le probl\u00e8me, car les analyses lisent inutilement un grand nombre de blocs. L'absence de cache RAM oblige le syst\u00e8me \u00e0 acc\u00e9der en permanence au support de donn\u00e9es, m\u00eame pour les ensembles de donn\u00e9es tr\u00e8s sollicit\u00e9s. Les configurations RAID sans cache Write-Back ou les micrologiciels de contr\u00f4leur d\u00e9fectueux augmentent \u00e9galement les d\u00e9lais de mani\u00e8re notable.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/io-wait-server-speicherproblem-8391.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Mesures imm\u00e9diates en cas de temps d'attente prolong\u00e9<\/h2>\n\n<p>Je r\u00e9duis d'abord les exc\u00e8s <strong>Parall\u00e9lisme<\/strong> pour les t\u00e2ches, les travailleurs et les connexions \u00e0 la base de donn\u00e9es. Ensuite, j'augmente la part de RAM pour les caches tels que le cache de page ou le pool de tampons InnoDB. J'active le cache Write-Back (avec BBU) sur le contr\u00f4leur RAID afin d'acc\u00e9l\u00e9rer les acc\u00e8s en \u00e9criture. Je d\u00e9place les processus de sauvegarde et d'ETL hors des heures de pointe et je d\u00e9couple les acc\u00e8s en \u00e9criture aux journaux. Enfin, j'optimise la taille des fichiers et la granularit\u00e9 des lots afin que le support de donn\u00e9es fonctionne plus efficacement.<\/p>\n\n<h2>Mise \u00e0 niveau du stockage : HDD, SSD ou NVMe ?<\/h2>\n\n<p>Je choisis la <strong>Technique<\/strong> En fonction de la charge de travail : de nombreux petits acc\u00e8s n\u00e9cessitent NVMe, les flux s\u00e9quentiels importants fonctionnent bien avec SSD, les donn\u00e9es d'archives restent sur HDD. Les disques NVMe modernes offrent un nombre d'IOPS nettement sup\u00e9rieur avec une latence tr\u00e8s faible, ce qui r\u00e9duit consid\u00e9rablement l'iowait. Lorsque le budget est important, je place les bases de donn\u00e9es critiques sur NVMe et les donn\u00e9es secondaires sur SSD\/HDD. Pour prendre mes d\u00e9cisions, je m'aide d'une comparaison telle que <a href=\"https:\/\/webhosting.de\/fr\/nvme-ssd-hdd-hebergement-web-comparaison-performances-couts-conseils-serveur-professionnel\/\">NVMe vs SSD vs HDD<\/a> pour la technique, les co\u00fbts et les effets. Je r\u00e9duis ainsi les temps d'attente l\u00e0 o\u00f9 ils sont les plus perceptibles pour l'utilisateur.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/iowait_serverlast_techoffice_3482.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Utilisation cibl\u00e9e du RAID et de la mise en cache<\/h2>\n\n<p>Je mise pour <strong>Performance<\/strong> J'utilise souvent RAID 10, car il traite plus rapidement les acc\u00e8s en lecture et en \u00e9criture et offre une redondance. J'utilise plut\u00f4t RAID 5\/6 pour les charges de travail \u00e0 forte intensit\u00e9 de lecture, o\u00f9 les p\u00e9nalit\u00e9s d'\u00e9criture ont moins d'impact. Une unit\u00e9 aliment\u00e9e par batterie permet un cache de r\u00e9\u00e9criture s\u00e9curis\u00e9 sur le contr\u00f4leur et acc\u00e9l\u00e8re consid\u00e9rablement les transactions. De plus, Redis ou Memcached acc\u00e9l\u00e8rent l'acc\u00e8s aux donn\u00e9es fr\u00e9quemment utilis\u00e9es dans la m\u00e9moire vive. Cela me permet de soulager les disques et de r\u00e9duire durablement l'iowait.<\/p>\n\n<h2>Choisir correctement les syst\u00e8mes de fichiers et les planificateurs d'E\/S<\/h2>\n\n<p>Je recourt \u00e0 des <strong>Charges de travail<\/strong> Souvent XFS pour sa bonne parall\u00e9lisation et sa gestion robuste des m\u00e9tadonn\u00e9es. J'utilise ZFS lorsque j'ai besoin de checksumming, de snapshots et de compression et que je dispose de suffisamment de RAM. Ext4 reste solide pour de nombreuses t\u00e2ches quotidiennes, mais peut prendre du retard en cas de tr\u00e8s nombreux inodes et flux parall\u00e8les. Sur les SSD, j'utilise des planificateurs de type Deadline ou None\/None, tandis que sur les HDD, une planification de type CFQ peut \u00eatre utile. J'ajuste avec pr\u00e9caution les param\u00e8tres de lecture anticip\u00e9e et la profondeur des files d'attente afin qu'ils correspondent au profil d'acc\u00e8s.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/io-wait-developer-arbeitsplatz3917.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Nivellement, QoS et priorit\u00e9s<\/h2>\n\n<p>Je combine NVMe rapide pour les t\u00e2ches intensives <strong>Donn\u00e9es<\/strong> avec SSD\/HDD pour les contenus froids, c'est-\u00e0-dire un v\u00e9ritable stockage hi\u00e9rarchis\u00e9. Ainsi, je ne paie pas partout pour une latence optimale, mais j'en profite l\u00e0 o\u00f9 cela compte. Avec QoS, je limite les t\u00e2ches d'arri\u00e8re-plan gourmandes en bande passante afin que les transactions critiques restent stables. Une approche pratique passe par <a href=\"https:\/\/webhosting.de\/fr\/hybrid-storage-hosting-nvme-ssd-hdd-tiering-avantages-performance-evolution\/\">Stockage hybride<\/a> et des classes claires pour les cycles de vie des donn\u00e9es. Cette combinaison maintient l'iowait \u00e0 un niveau bas et \u00e9vite les surprises en cas de charge importante.<\/p>\n\n<h2>All\u00e9ger les bases de donn\u00e9es et les applications<\/h2>\n\n<p>J'\u00e9conomise des E\/S en utilisant la <strong>Requ\u00eates<\/strong> Je d\u00e9finis des index rigoureux et adapt\u00e9s. J'\u00e9limine les requ\u00eates N+1, j'optimise les jointures et je r\u00e9duis les transactions bavardes. Je dimensionne les pools de connexions de mani\u00e8re \u00e0 ce qu'ils n'encombrent pas le stockage. Je lisse les pics d'\u00e9criture \u00e0 l'aide du batching et des files d'attente asynchrones afin que les pics ne mobilisent pas toutes les ressources en m\u00eame temps. J'\u00e9cris les logs de mani\u00e8re group\u00e9e, j'augmente les rotations et je minimise les acc\u00e8s de synchronisation lorsque les exigences de coh\u00e9rence le permettent.<\/p>\n\n<h2>Strat\u00e9gie de surveillance et alertes intelligentes<\/h2>\n\n<p>Je mesure en continu iowait, les percentiles de latence, avgqu-sz, IOPS et <strong>D\u00e9bit<\/strong>. Je ne d\u00e9clenche des alertes qu'en cas de tendances, et non en cas de pics courts, afin que les \u00e9quipes restent concentr\u00e9es. Je s\u00e9pare les tableaux de bord pour la capacit\u00e9, la latence et les taux d'erreur afin que les causes soient rapidement visibles. Le tra\u00e7age des requ\u00eates montre quels chemins sollicitent le plus le stockage. Pour les applications critiques en termes de latence, cela m'aide. <a href=\"https:\/\/webhosting.de\/fr\/micro-latence-hebergement-optimisation-base-de-donnees-reseau-eclair\/\">H\u00e9bergement \u00e0 micro-latence<\/a>, afin de r\u00e9duire globalement les temps de r\u00e9action.<\/p>\n\n<h2>Pratique : parcours diagnostique \u00e9tape par \u00e9tape<\/h2>\n\n<p>Je proc\u00e8de de mani\u00e8re structur\u00e9e afin d'attribuer sans aucun doute les temps d'attente E\/S. Je v\u00e9rifie d'abord \u00e0 l'\u00e9chelle du syst\u00e8me avec vmstat et sar si iowait est \u00e9lev\u00e9 et si des changements de contexte et des SoftIRQ sont simultan\u00e9ment visibles. Ensuite, je v\u00e9rifie pour chaque appareil avec iostat -x si r_await\/w_await et avgqu-sz augmentent. Enfin, j'utilise iotop\/pidstat -d pour identifier les processus qui d\u00e9placent le plus d'octets ou qui causent le plus de temps d'attente.<\/p>\n\n<ul>\n  <li>Test rapide avec tmpfs : je r\u00e9p\u00e8te les processus critiques \u00e0 titre d'essai sur des disques tmpfs\/RAM. Si la latence diminue consid\u00e9rablement, le support de donn\u00e9es est le goulot d'\u00e9tranglement.<\/li>\n  <li>V\u00e9rification de dmesg\/smartctl : une accumulation d'erreurs, de r\u00e9initialisations ou de r\u00e9allocations indique des probl\u00e8mes mat\u00e9riels ou de c\u00e2blage.<\/li>\n  <li>Comparaison entre lecture et \u00e9criture : un w_await long avec un faible taux d'\u00e9criture indique un cache du contr\u00f4leur, des param\u00e8tres de barri\u00e8re ou une charge de synchronisation.<\/li>\n<\/ul>\n\n<p>Je s\u00e9pare rapidement : conception de l'application et parall\u00e9lisme, syst\u00e8me de fichiers\/contr\u00f4leur ou support physique. Ensuite, j'optimise segment par segment, au lieu de tout modifier \u00e0 l'aveuglette.<\/p>\n\n<h2>Virtualisation et conteneurs : d\u00e9samorcer les voisins bruyants<\/h2>\n\n<p>Dans les machines virtuelles et les conteneurs, j'\u00e9value toujours iowait en tenant compte des ressources partag\u00e9es. Les hyperviseurs surcharg\u00e9s g\u00e9n\u00e8rent des latences variables, m\u00eame si le processeur invit\u00e9 semble \u201c libre \u201d. Les p\u00e9riph\u00e9riques blocs virtuels (virtio, SCSI \u00e9mul\u00e9) et le stockage r\u00e9seau ajoutent des couches de latence suppl\u00e9mentaires. Je m'assure d'obtenir des engagements IOPS\/d\u00e9bit d\u00e9di\u00e9s, je limite les t\u00e2ches gourmandes en rafales et je r\u00e9partis les charges de travail bruyantes entre les h\u00f4tes.<\/p>\n\n<ul>\n  <li>cgroups\/Containers : je d\u00e9finis io.weight ou io.max afin que les t\u00e2ches secondaires ne \u201c vident \u201d pas le stockage.<\/li>\n  <li>StorageClass\/Volumes : je choisis des classes adapt\u00e9es au profil de charge de travail (al\u00e9atoire ou s\u00e9quentiel) et s\u00e9pare les journaux\/WAL des donn\u00e9es.<\/li>\n  <li>VirtIO\/NVMe : je privil\u00e9gie les pilotes de paravirtualisation modernes et v\u00e9rifie le nombre de files d'attente par vCPU pour un parall\u00e9lisme maximal sans surcharge.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/server-io-wait-latenz-8193.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Optimisation du syst\u00e8me d'exploitation et du noyau avec discernement<\/h2>\n\n<p>J'ajuste le syst\u00e8me d'exploitation l\u00e0 o\u00f9 cela apporte une aide mesurable. Les profils de r\u00e9glage trop agressifs ne font souvent que cr\u00e9er de nouveaux probl\u00e8mes. Je commence par des \u00e9tapes conservatrices et document\u00e9es, et je mesure les r\u00e9sultats entre chacune d'elles.<\/p>\n\n<ul>\n  <li>Writeback : je limite vm.dirty_background_ratio et vm.dirty_ratio afin que le noyau \u00e9crive les donn\u00e9es \u00e0 temps dans des lots ordonn\u00e9s et lisse les pics.<\/li>\n  <li>Read-Ahead : j'adapte le Read-Ahead \u00e0 chaque appareil en fonction du mod\u00e8le d'acc\u00e8s (faible pour les acc\u00e8s al\u00e9atoires, plus \u00e9lev\u00e9 pour les acc\u00e8s s\u00e9quentiels) afin d'\u00e9viter la lecture de pages inutiles.<\/li>\n  <li>Planificateur\/blk-mq : sur NVMe, j'utilise \u201c none \u201d\/mq optimis\u00e9, sur HDD, \u00e9ventuellement orient\u00e9 \u00e9quit\u00e9. Je v\u00e9rifie si la profondeur de la file d'attente est adapt\u00e9e \u00e0 chaque appareil et \u00e0 chaque CPU.<\/li>\n  <li>IRQ\/NUMA : je r\u00e9partis les interruptions NVMe entre les c\u0153urs (affinit\u00e9 IRQ), j'\u00e9vite le trafic inter-NUMA et je conserve les applications et les donn\u00e9es \u201c localement \u201d.<\/li>\n  <li>Gouverneur CPU : en production, je r\u00e8gle g\u00e9n\u00e9ralement sur \u00ab performance \u00bb afin que les changements de fr\u00e9quence n'entra\u00eenent pas de latence suppl\u00e9mentaire.<\/li>\n<\/ul>\n\n<h2>Options de montage et d\u00e9tails du syst\u00e8me de fichiers<\/h2>\n\n<p>Gr\u00e2ce \u00e0 des options de montage adapt\u00e9es, j'\u00e9vite les E\/S inutiles et j'am\u00e9liore la coh\u00e9rence l\u00e0 o\u00f9 cela compte. J'utilise relatime\/noatime pour r\u00e9duire les acc\u00e8s en \u00e9criture Atime. Sur les SSD, j'utilise fstrim p\u00e9riodique au lieu de discard continu si les disques souffrent de discard. J'adapte les param\u00e8tres de journalisation \u00e0 la charge de travail : des intervalles de validation courts augmentent la durabilit\u00e9, tandis que des intervalles longs r\u00e9duisent le taux d'\u00e9criture.<\/p>\n\n<ul>\n  <li>Ext4 : data=ordered reste une bonne norme ; lazytime r\u00e9duit la pression d'\u00e9criture des m\u00e9tadonn\u00e9es.<\/li>\n  <li>XFS : je fais attention aux param\u00e8tres du journal (taille\/tampon) afin que la charge des m\u00e9tadonn\u00e9es ne devienne pas un goulot d'\u00e9tranglement.<\/li>\n  <li>ZFS : je pr\u00e9vois suffisamment d'ARC et adapte la taille des enregistrements aux profils de donn\u00e9es ; je choisis consciemment les politiques de synchronisation et n'ajoute SLOG que si cela apporte une valeur ajout\u00e9e coh\u00e9rente.<\/li>\n<\/ul>\n\n<h2>Benchmarking : r\u00e9aliste plut\u00f4t qu'optimiste<\/h2>\n\n<p>Je mesure \u00e0 l'aide de profils FIO qui refl\u00e8tent la charge de travail r\u00e9elle : tailles de blocs de 4k\/8k pour OLTP, 64k\/1M pour les flux, rapports lecture\/\u00e9criture mixtes, profondeurs de file d'attente correspondant \u00e0 l'application. Je fais la distinction entre les ex\u00e9cutions \u201c froides \u201d et \u201c chaudes \u201d, je pr\u00e9conditionne les SSD et je consid\u00e8re l'\u00e9tat stable, pas seulement les premi\u00e8res secondes. J'\u00e9value les 95e et 99e centiles, car c'est l\u00e0 que se trouve l'exp\u00e9rience utilisateur.<\/p>\n\n<ul>\n  <li>Chemin unique ou multi-t\u00e2ches : je teste d'abord par appareil, puis en parall\u00e8le, afin de comprendre la mise \u00e0 l'\u00e9chelle et les interf\u00e9rences.<\/li>\n  <li>Influences du cache : vider d\u00e9lib\u00e9r\u00e9ment le cache de la page ou le mesurer de mani\u00e8re cibl\u00e9e afin de s\u00e9parer les performances de l'appareil des acc\u00e8s \u00e0 la m\u00e9moire vive.<\/li>\n  <li>A\/B : Je documente l'optimisation avant\/apr\u00e8s de mani\u00e8re identique afin que les am\u00e9liorations soient incontestables.<\/li>\n<\/ul>\n\n<h2>Chiffrement, compression et d\u00e9duplication<\/h2>\n\n<p>Je tiens compte du fait que les couches cryptographiques et la compression modifient les caract\u00e9ristiques d'E\/S. dm-crypt\/LUKS peut augmenter la latence sans acc\u00e9l\u00e9ration mat\u00e9rielle ; avec AES-NI, la charge CPU reste souvent mod\u00e9r\u00e9e. Une compression l\u00e9g\u00e8re (par exemple LZ4) r\u00e9duit le volume d'E\/S et peut \u00eatre plus rapide malgr\u00e9 l'utilisation du CPU, en particulier avec des supports lents. Les m\u00e9canismes de d\u00e9duplication augmentent le travail sur les m\u00e9tadonn\u00e9es \u2013 ils conviennent aux sc\u00e9narios d'archivage, mais moins aux OLTP critiques en termes de latence.<\/p>\n\n<h2>Ma\u00eetriser les sauvegardes, la maintenance et les t\u00e2ches en arri\u00e8re-plan<\/h2>\n\n<p>Je planifie les sauvegardes, les analyses et les rotations de mani\u00e8re \u00e0 ne pas enfreindre les SLO. Je limite le d\u00e9bit, je d\u00e9finis ionice\/nice et je divise les longues ex\u00e9cutions en petites \u00e9tapes pouvant \u00eatre poursuivies. Les sauvegardes bas\u00e9es sur des instantan\u00e9s r\u00e9duisent le verrouillage et la pression sur les E\/S. Pour le traitement des journaux, j'utilise des tampons et des files d'attente d\u00e9di\u00e9es afin que les pics d'\u00e9criture ne perturbent pas le trafic de production.<\/p>\n\n<ul>\n  <li>S\u00e9paration des chemins : journaux WAL\/transactions sur des supports rapides, donn\u00e9es en vrac sur des niveaux de capacit\u00e9.<\/li>\n  <li>Cycles de maintenance : fstrim r\u00e9gulier, v\u00e9rifications du syst\u00e8me de fichiers pendant les fen\u00eatres de maintenance et mise \u00e0 jour du micrologiciel du contr\u00f4leur vers des versions stables.<\/li>\n  <li>Limitation : les limites de bande passante pour ETL\/sauvegarde maintiennent les latences p99 stables.<\/li>\n<\/ul>\n\n<h2>Planification des capacit\u00e9s et SLO pour le stockage<\/h2>\n\n<p>Je planifie le stockage non seulement en fonction de la capacit\u00e9, mais aussi en fonction des budgets de latence. Pour les chemins importants, je d\u00e9finis des valeurs cibles pour p95\/p99 et conserve une marge de 20 \u00e0 30 %. Je v\u00e9rifie les taux de croissance et les profils de charge tous les trimestres ; si la profondeur des files d'attente augmente sous une charge normale, je proc\u00e8de \u00e0 une mise \u00e0 l'\u00e9chelle plus t\u00f4t que tard. Les strat\u00e9gies de d\u00e9ploiement avec charge Canary permettent de tester le comportement des E\/S des nouvelles versions avant que le trafic ne soit complet.<\/p>\n\n<h2>Mod\u00e8les de d\u00e9pannage pour le quotidien<\/h2>\n\n<p>Je r\u00e9sous les probl\u00e8mes r\u00e9currents typiques \u00e0 l'aide de recettes fixes. En cas de fluctuations importantes du d\u00e9bit, je r\u00e9duis les t\u00e2ches en masse et augmente les caches. Si w_await est constamment \u00e9lev\u00e9, je v\u00e9rifie Write-Back, Barriers et l'intensit\u00e9 de la synchronisation. Si avgqu-sz est \u00e9lev\u00e9, je r\u00e9duis le parall\u00e9lisme c\u00f4t\u00e9 application et r\u00e9partis les hotspots sur plusieurs volumes. Si seuls certains locataires sont affect\u00e9s, le probl\u00e8me vient souvent de la taille de la requ\u00eate ou du pool, et non du stockage dans son ensemble.<\/p>\n\n<p>Je documente les d\u00e9cisions \u00e0 l'aide de valeurs mesur\u00e9es et les relie aux d\u00e9ploiements et aux modifications de configuration. Cela permet de voir clairement ce qui a vraiment aid\u00e9 et ce qui n'\u00e9tait que le fruit du hasard.<\/p>\n\n<h2>En bref<\/h2>\n\n<p>Je lis <strong>Attente E\/S<\/strong> Un message clair : le support de donn\u00e9es d\u00e9termine la vitesse. Une bonne mesure me permet de d\u00e9terminer si la latence, les IOPS ou les files d'attente constituent un facteur limitant. Je peux alors d\u00e9cider d'augmenter la mise en cache, d'ajuster le parall\u00e9lisme, de simplifier les requ\u00eates ou de mettre \u00e0 niveau le stockage. NVMe, RAID 10 avec cache en \u00e9criture diff\u00e9r\u00e9e, syst\u00e8mes de fichiers adapt\u00e9s et QoS r\u00e9duisent sensiblement les temps d'attente. Je maintiens ainsi l'io wait hosting \u00e0 un faible niveau et fournis des r\u00e9ponses rapides, m\u00eame lorsque la charge augmente.<\/p>","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez comment comprendre et r\u00e9soudre les probl\u00e8mes d'attente E\/S. Conseils pour l'optimisation du stockage, les mises \u00e0 niveau SSD et l'optimisation des performances pour de meilleurs r\u00e9sultats d'h\u00e9bergement io wait.<\/p>","protected":false},"author":1,"featured_media":15640,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-15647","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"2735","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"I\/O Wait hosting","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"15640","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/15647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/comments?post=15647"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/15647\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media\/15640"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media?parent=15647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/categories?post=15647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/tags?post=15647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}