[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"megamenu-contexts-ac-hub":22,"alexandrecarette-hero-data":24,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":31,"$fGtyqUPJiY4wHHY0DPUM57r5C9k0AlfGRCeLIg7Po2vk":109,"megamenu":114,"header-db":174,"footer-db":188,"$fbhDMRPdWxYi1dskaPJSBawAgkIFGwNHuRTBj1DkjbJM":206,"$fAqDbdVr6KNDgvYLtq1L3-GrKUu8mHnWT9lzvWnfBepE":209,"i18n-alternates-_root-fr":27,"$fM6WpGlbJuPy4jQNmujILrLNRIBl4RnmGytH9QLm-2B0":224,"$flXZ3X4mhl7DQZJ8ZXMB6KFymryy7Ag0omBu_IdFhrVw":228,"$fuze8AIzLtVniz3K8SJ8wfgw6QQLYyZJIEoXEvy9qI6s":301,"$frQjqGx5Wi4I7a4hbAgGJjG7RV0hMc9Q2c9rjMAbEYio":302},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"contexts":23},[],{"capa":25,"malt":28,"legal":29,"links":30},{"state":26,"trimester":27,"missionsOpen":27,"missionsMax":27,"nextTrimester":27},"fallback",null,{"url":27,"rating":27,"reviewsCount":27},{"siret":27,"status":27,"city":27},{"linkedin":27,"github":27},{"columns":32},[33,50,77,96],{"title":34,"position":35,"links":36},"Plateforme",1,[37,41,44,47],{"label":38,"href":39,"external":40},"Tarifs","\u002Ftarifs",false,{"label":42,"href":43,"external":40},"Devenir Ambassadeur","\u002Fambassadeur",{"label":45,"href":46,"external":40},"Méthode","\u002Fmodules",{"label":48,"href":49,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":51,"position":52,"links":53},"Le Synedre",2,[54,57,60,63,66,69,71,74],{"label":55,"href":56,"external":40},"L'histoire","\u002Fsynedre",{"label":58,"href":59,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":61,"href":62,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":64,"href":65,"external":40},"Le réacteur en direct","\u002Freacteur",{"label":67,"href":68,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":70,"href":62,"external":20},"Les agents IA",{"label":72,"href":73,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":75,"href":76,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":78,"position":79,"links":80},"Ressources",3,[81,84,87,90,93],{"label":82,"href":83,"external":40},"Blog","\u002Fblog",{"label":85,"href":86,"external":40},"Academy","\u002Facademy",{"label":88,"href":89,"external":40},"Expertise PrestaShop","\u002Fexpertise",{"label":91,"href":92,"external":40},"Flywheel","\u002Fflywheel",{"label":94,"href":95,"external":40},"Manifeste","\u002Fmanifeste",{"title":97,"position":98,"links":99},"À propos",4,[100,103,106],{"label":101,"href":102,"external":40},"Alexandre Carette","\u002Fa-propos",{"label":104,"href":105,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":107,"href":108,"external":40},"Contact","\u002Fcontact",{"tree_loaded":20,"found":40,"kind":110,"id":27,"path":111,"path_fr":111,"pilier_slug":111,"pilier_slug_fr":111,"slug":111,"name":111,"description":111,"meta_title":111,"meta_description":111,"breadcrumb":112,"children":113},"category","",[],[],{"items":115},[116,125,130,135,142,149,156,162,168],{"id":117,"type":118,"label":119,"href":89,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":122,"barVisible":20,"children":123,"psChildren":124},41,"link",{"fr":120},"Expertise","picto",0,[],[],{"id":126,"type":118,"label":127,"href":83,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":35,"barVisible":20,"children":128,"psChildren":129},42,{"fr":82},[],[],{"id":131,"type":118,"label":132,"href":46,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":52,"barVisible":20,"children":133,"psChildren":134},43,{"fr":45},[],[],{"id":136,"type":118,"label":137,"href":139,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":79,"barVisible":20,"children":140,"psChildren":141},49,{"fr":138},"Modules gratuits","\u002Fmodules-libres",[],[],{"id":143,"type":118,"label":144,"href":146,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":98,"barVisible":20,"children":147,"psChildren":148},44,{"fr":145},"Outils IA","\u002Foutils-ia",[],[],{"id":150,"type":118,"label":151,"href":39,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":152,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":153,"barVisible":20,"children":154,"psChildren":155},45,{"fr":38},{"highlight":20},5,[],[],{"id":157,"type":118,"label":158,"href":86,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":159,"barVisible":20,"children":160,"psChildren":161},46,{"fr":85},6,[],[],{"id":163,"type":118,"label":164,"href":102,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":165,"barVisible":20,"children":166,"psChildren":167},47,{"fr":97},7,[],[],{"id":169,"type":118,"label":170,"href":108,"icon":27,"iconRole":121,"description":27,"badge":27,"groupTitle":27,"groupKey":27,"style":27,"gridColumns":27,"cssClass":27,"psCategoryId":27,"psProductId":27,"showPsChildren":40,"position":171,"barVisible":20,"children":172,"psChildren":173},48,{"fr":107},8,[],[],{"header":175},{"logo":176,"topBar":181,"contactEmail":184,"contactPhone":27,"features":185,"navBar":27,"headerLinks":187,"storesHref":27},{"src":177,"alt":178,"text":101,"href":179,"class":180},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":27,"messageMobile":27,"showLanguages":40,"align":182,"languages":183},"left",[],"contact@alexandrecarette.fr",{"showSearch":40,"showWishlist":40,"showLogin":20,"showContact":40,"showCart":40,"showQuoteButton":20,"showBlogLink":40,"showContactLink":40,"showGiftcardLink":40,"showStoresLink":40,"stickyHeader":20,"staticHeader":40,"headerLayout":186},"inline",{},{"footer":189},{"theme":190,"description":27,"hours":27,"logo":191,"contact":192,"social":193,"bottomBar":203,"newsletter":204},"dark",{"src":177,"href":179,"alt":101},{"email":27,"phone":27,"address":27,"cta":27},[194,197,200],{"platform":195,"href":196,"label":195},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":198,"href":199,"label":198},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":201,"href":202,"label":201},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":27},{"show":40,"title":27,"description":27,"placeholder":27,"ctaLabel":27,"consentText":205},"J'accepte de recevoir par e-mail les actualités de CodeMyShop et d'Alexandre Carette : nouveaux modules libres, astuces PrestaShop, SEO et performance. Je peux me désinscrire à tout moment grâce au lien présent dans chaque message.",{"ok":20,"alternates":207},{"fr":208},"\u002Fblog\u002Fdevops\u002Fdocker\u002Fhebergement-prestashop-vps-ovh-configuration-production",{"tree_loaded":20,"found":20,"kind":110,"id":210,"path":211,"path_fr":211,"pilier_slug":212,"pilier_slug_fr":212,"slug":213,"name":214,"description":215,"meta_title":216,"meta_description":217,"breadcrumb":218,"children":223},570,"devops\u002Fdocker","devops","docker","Docker","Containerisation et orchestration Docker.","Docker — Blog Alexandre Carette","Docker pour e-commerce : containerisation, réseaux, volumes, orchestration.",[219,222],{"id":220,"slug":212,"path":212,"label":221},557,"DevOps",{"id":210,"slug":213,"path":211,"label":214},[],{"academy":225,"blog":226,"expertise":227},[],[],[],{"id":229,"canonicalInnerPath":230,"indexable":20,"title":231,"h1":232,"category":212,"categoryName":214,"pillarName":221,"subcategory":213,"slug":233,"coverImage":234,"thumbnailImage":234,"content":235,"visuels":236,"faq":237,"metaDescription":286,"active":20,"datePublished":287,"dateUpdated":287,"readingTime":288,"mentor":27,"alternates":289,"langsWithContent":290,"audioEnabled":40,"audioUrl":111,"author":292},115,"devops\u002Fdocker\u002Fhebergement-prestashop-vps-ovh-configuration-production","VPS OVH PrestaShop : Nginx et PHP-FPM en production","Hébergement PrestaShop sur VPS OVH : configuration de production Nginx et PHP-FPM","docker--hebergement-prestashop-vps-ovh-configuration-production","\u002Fblog-covers\u002F169867e09ab9.webp","\u003Cp>Un e-commerçant qui passe de 10 à 50 commandes par jour franchit un seuil invisible sur le papier, mais très concret côté serveur. Ce n'est pas une question de volume de ventes : c'est une question de requêtes PHP simultanées, de connexions MySQL ouvertes en parallèle et de cycles CPU partagés avec des dizaines d'autres sites sur le même hôte. Cet article détaille pourquoi l'hébergement mutualisé craque à ce niveau de trafic, et comment dimensionner correctement un VPS NVMe OVH avec Nginx, PHP-FPM et MariaDB pour tenir la charge sans y laisser des heures de debugging le soir.\u003C\u002Fp>\n\n\u003Ch2>Pourquoi l'hébergement mutualisé sature dès 50 commandes par jour\u003C\u002Fh2>\n\u003Cp>Un hébergement mutualisé repose sur un principe simple : plusieurs centaines de sites partagent le même serveur physique, le même processeur, la même bande passante disque. Tant que le trafic reste faible, la mutualisation des ressources fonctionne. Le problème apparaît quand PrestaShop, un CMS particulièrement gourmand en requêtes SQL et en calculs PHP à chaque affichage de page produit, commence à générer plusieurs dizaines de requêtes simultanées.\u003C\u002Fp>\n\u003Cp>Concrètement, voici ce qui se passe techniquement quand une boutique PrestaShop dépasse ce seuil sur un mutualisé :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Limite de processus PHP concurrents\u003C\u002Fstrong> : les hébergeurs mutualisés imposent un nombre maximal de processus PHP actifs par compte, souvent entre 4 et 10. Au-delà, les visiteurs supplémentaires attendent en file, ce qui se traduit par des temps de réponse qui grimpent brutalement.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CPU throttlé\u003C\u002Fstrong> : le processeur est partagé selon des quotas invisibles. Un pic de trafic sur un autre site du même serveur peut directement dégrader les temps de réponse de votre boutique, sans qu'aucune alerte ne vous prévienne.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Base de données mutualisée\u003C\u002Fstrong> : MySQL tourne en mode partagé, avec un buffer pool minuscule réparti entre des centaines de bases. Les requêtes de recherche produit, de gestion du panier et de calcul des promotions deviennent lentes dès que le cache mémoire ne suffit plus.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>I\u002FO disque partagé\u003C\u002Fstrong> : même sur un hébergeur annonçant du SSD, l'accès disque reste mutualisé. Les écritures de logs, de sessions et de cache PrestaShop entrent en concurrence avec celles des voisins.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Le résultat mesurable : un temps de génération de page qui passe de 400 ms à plus de 3 secondes aux heures de pointe, une hausse du taux de rebond, et des paniers abandonnés parce que la validation de commande timeout. Ce n'est pas une impression, c'est un phénomène observable dans n'importe quel outil de mesure de performance web.\u003C\u002Fp>\n\n\u003Cblockquote>Sur les audits que nous menons, le motif de migration le plus fréquent n'est jamais « le site est tombé ». C'est toujours la même phrase : « ça rame le vendredi soir, et je ne comprends pas pourquoi ». La réponse est presque toujours la même : le mutualisé n'a jamais été conçu pour absorber des pics de charge PHP-FPM et MySQL simultanés. — CodeMyShop, retour de terrain sur les migrations PrestaShop\u003C\u002Fblockquote>\n\n\u003Ch2>Dimensionner un VPS NVMe OVH selon le trafic réel de la boutique\u003C\u002Fh2>\n\u003Cp>Le passage à un VPS NVMe OVH change radicalement la donne : ressources CPU dédiées ou garanties, stockage NVMe avec des débits d'écriture largement supérieurs au SSD classique, et surtout un contrôle total sur la configuration serveur. Mais dimensionner un VPS ne consiste pas à prendre l'offre la plus chère par précaution. Il s'agit de calculer les ressources réellement nécessaires selon le trafic, le nombre de produits en catalogue et la complexité du thème.\u003C\u002Fp>\n\u003Cp>Le tableau suivant donne des ordres de grandeur pour dimensionner un VPS NVMe selon le volume de commandes quotidien, en tenant compte du fait que le trafic de visite est généralement 20 à 40 fois supérieur au nombre de commandes converties :\u003C\u002Fp>\n\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Commandes\u002Fjour\u003C\u002Fth>\u003Cth>vCPU recommandés\u003C\u002Fth>\u003Cth>RAM recommandée\u003C\u002Fth>\u003Cth>Pool PHP-FPM (max_children)\u003C\u002Fth>\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>10 à 30\u003C\u002Ftd>\u003Ctd>2 vCPU\u003C\u002Ftd>\u003Ctd>4 Go\u003C\u002Ftd>\u003Ctd>8 à 12\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>30 à 80\u003C\u002Ftd>\u003Ctd>4 vCPU\u003C\u002Ftd>\u003Ctd>8 Go\u003C\u002Ftd>\u003Ctd>16 à 24\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>80 à 200\u003C\u002Ftd>\u003Ctd>6 vCPU\u003C\u002Ftd>\u003Ctd>16 Go\u003C\u002Ftd>\u003Ctd>28 à 40\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>200+\u003C\u002Ftd>\u003Ctd>8 vCPU ou plus\u003C\u002Ftd>\u003Ctd>32 Go\u003C\u002Ftd>\u003Ctd>Architecture multi-serveurs recommandée\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Cp>Ces chiffres supposent un thème PrestaShop standard, sans surcharge de modules tiers exécutant des requêtes lourdes à chaque affichage. Un catalogue volumineux avec des variantes de produits complexes (tailles, couleurs, déclinaisons multiples) consomme davantage de mémoire par requête PHP, ce qui doit être intégré dans le calcul du pool. Une boutique qui vend par exemple des t-shirts déclinés en plusieurs tailles dans sa \u003Ca href=\"\u002Fvetements\u002Fhommes\u002F\">collection homme\u003C\u002Fa> génère mécaniquement plus de jointures SQL sur les pages catégorie qu'une boutique à catalogue simple.\u003C\u002Fp>\n\n\u003Ch2>Nginx en production : configuration serveur pour PrestaShop\u003C\u002Fh2>\n\u003Cp>Nginx sert de reverse proxy devant PHP-FPM et gère l'essentiel du trafic statique. Une configuration Nginx mal réglée annule une bonne partie du gain apporté par le passage au VPS NVMe. Voici les points de configuration qui font une différence mesurable en production :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>worker_processes auto\u003C\u002Fstrong> associé à \u003Cstrong>worker_connections\u003C\u002Fstrong> dimensionné selon le nombre de vCPU réel du VPS, pas selon une valeur copiée d'un tutoriel générique.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>gzip ou brotli activé\u003C\u002Fstrong> sur les réponses HTML, CSS et JS, avec un niveau de compression 5 ou 6 pour équilibrer charge CPU et gain de bande passante.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>try_files correctement configuré\u003C\u002Fstrong> pour respecter la réécriture d'URL PrestaShop, faute de quoi certaines pages catégorie ou fiche produit renvoient des erreurs 404 après une migration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fastcgi_cache ou microcache\u003C\u002Fstrong> sur les pages publiques non personnalisées, avec des règles d'exclusion strictes sur les pages panier, compte client et paiement pour éviter de servir du contenu en cache à un client connecté.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fichiers statiques servis directement par Nginx\u003C\u002Fstrong> (images, CSS, JS) sans passer par PHP-FPM, avec des en-têtes de cache navigateur longs sur les assets versionnés.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Une architecture Nginx bien pensée fonctionne d'ailleurs de la même façon qu'elle soit déployée directement sur le VPS ou conteneurisée. Sur ce point, notre \u003Ca href=\"\u002Fblog\u002Fdevops\u002Fdocker-compose-prestashop-production\">guide Docker Compose pour PrestaShop en production\u003C\u002Fa> détaille une configuration reproductible qui isole Nginx, PHP-FPM et MariaDB dans des conteneurs distincts, ce qui simplifie considérablement les montées de version.\u003C\u002Fp>\n\n\u003Ch2>PHP-FPM optimisé : pools distincts, OPcache et limites mémoire réelles\u003C\u002Fh2>\n\u003Cp>PHP-FPM est le composant le plus souvent mal configuré sur un VPS PrestaShop. La tentation est de laisser les valeurs par défaut ou de copier une configuration trouvée en ligne sans l'adapter à la RAM réellement disponible. Or un pool PHP-FPM mal dimensionné provoque soit une sous-utilisation du serveur, soit un swap mémoire qui ralentit tout le système.\u003C\u002Fp>\n\u003Cp>Le calcul de base est simple : chaque processus PHP-FPM sous PrestaShop consomme en moyenne entre 60 et 120 Mo de RAM selon les modules actifs. Sur un VPS de 8 Go réservant 3 Go au système, à MariaDB et au cache OPcache, il reste environ 5 Go disponibles pour PHP-FPM, ce qui autorise un \u003Cstrong>pm.max_children\u003C\u002Fstrong> d'environ 40 à 50, à condition de mesurer la consommation réelle avec un outil de monitoring plutôt que de deviner.\u003C\u002Fp>\n\u003Cp>Les réglages qui font la différence concrète en production :\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Pools PHP-FPM distincts\u003C\u002Fstrong> : un pool dédié au front-office public, un pool dédié au back-office administrateur. Cela évite qu'un import massif de produits dans l'administration ne consomme tous les processus disponibles et bloque les visiteurs du site public.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>pm = dynamic\u003C\u002Fstrong> avec un \u003Cstrong>pm.start_servers\u003C\u002Fstrong> proche du trafic moyen observé, et un \u003Cstrong>pm.max_spare_servers\u003C\u002Fstrong> qui absorbe les pics sans sur-allouer en permanence.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>OPcache activé et dimensionné\u003C\u002Fstrong> : \u003Cstrong>opcache.memory_consumption\u003C\u002Fstrong> à 256 Mo minimum pour un catalogue PrestaShop de taille moyenne, \u003Cstrong>opcache.max_accelerated_files\u003C\u002Fstrong> relevé au-dessus de 20 000 pour couvrir l'ensemble des fichiers du cœur et des modules, et \u003Cstrong>opcache.validate_timestamps\u003C\u002Fstrong> désactivé en production pour éviter une vérification systématique des fichiers à chaque requête (au prix d'un rechargement manuel après déploiement).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>request_terminate_timeout\u003C\u002Fstrong> réglé pour éviter qu'un processus PHP bloqué (souvent lié à un module tiers ou un appel API externe défaillant) ne monopolise un slot du pool indéfiniment.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Cblockquote>La limite mémoire théorique annoncée par un fournisseur ne correspond presque jamais à ce qu'on observe en charge réelle. Sur les VPS que nous configurons, nous mesurons systématiquement la consommation par processus PHP-FPM pendant 48 heures avant de figer le pool. C'est la seule méthode fiable, tout calcul purement théorique sous-estime l'impact des modules PrestaShop tiers. — CodeMyShop, note d'exploitation VPS\u003C\u002Fblockquote>\n\n\u003Ch2>MariaDB fine-tunée : buffer pool, connexions et requêtes lentes\u003C\u002Fh2>\n\u003Cp>MariaDB constitue souvent le goulot d'étranglement invisible d'une boutique PrestaShop, car les symptômes apparaissent côté PHP alors que la cause réside dans la base. Le réglage le plus déterminant est l'\u003Cstrong>innodb_buffer_pool_size\u003C\u002Fstrong>, qui doit être fixé entre 50 et 70 % de la RAM disponible sur un serveur dédié à la base de données, et proportionnellement moins sur un VPS mutualisant Nginx, PHP-FPM et MariaDB sur la même machine.\u003C\u002Fp>\n\u003Cp>Les autres variables à surveiller de près :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>max_connections\u003C\u002Fstrong> aligné sur le nombre réel de processus PHP-FPM susceptibles d'ouvrir une connexion simultanée, pour éviter les erreurs de connexions refusées en pic de trafic.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>slow_query_log activé\u003C\u002Fstrong> avec un seuil bas (autour de 0,5 seconde) pendant les premières semaines suivant la mise en production, afin d'identifier les requêtes de modules tiers mal indexées.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>query_cache désactivé\u003C\u002Fstrong> sur les versions récentes de MariaDB au profit du cache applicatif PrestaShop, plus pertinent pour un catalogue qui change fréquemment.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>innodb_flush_log_at_trx_commit\u003C\u002Fstrong> ajusté selon le compromis souhaité entre durabilité stricte des transactions et performance d'écriture, un point à discuter avec la personne qui exploite l'infrastructure plutôt qu'à régler par défaut.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>La documentation officielle de MariaDB détaille précisément le comportement de chacune de ces variables et constitue la référence à consulter avant toute modification en production : \u003Ca href=\"https:\u002F\u002Fmariadb.com\u002Fkb\u002Fen\u002Finnodb-system-variables\u002F\" target=\"_blank\" rel=\"noopener\">MariaDB Knowledge Base — InnoDB System Variables\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Architecture complète : de la configuration serveur à la boutique en production\u003C\u002Fh2>\n\u003Cp>Une fois Nginx, PHP-FPM et MariaDB réglés indépendamment, l'enjeu devient leur cohérence globale. Un pool PHP-FPM trop généreux face à un buffer pool MariaDB sous-dimensionné déplace simplement le goulot d'étranglement d'un composant à l'autre. C'est pourquoi le dimensionnement doit se faire de façon itérative, en observant les métriques réelles sous charge plutôt qu'en appliquant des ratios figés.\u003C\u002Fp>\n\u003Cp>Ce travail de calibrage est également celui que nous détaillons de façon plus large dans notre \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fprestashop-hosting-ovh-guide-complet-ecommercants\">guide complet sur l'hébergement PrestaShop VPS OVH\u003C\u002Fa>, qui couvre en plus la partie sauvegarde, sécurité réseau et migration depuis un mutualisé. Pour les boutiques qui envisagent une conteneurisation complète de leur stack, le passage par Docker sécurise également les montées de version PHP sans risque de casse en production, comme détaillé dans notre article sur le \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdocker-vps-deploy-production\">déploiement Docker VPS sans stress\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Un exemple concret pour illustrer l'impact catalogue : une page produit affichant plusieurs déclinaisons visuelles, comme celle du \u003Ca href=\"\u002Faccessoires\u002Faccessoires-de-maison\u002Fmug-the-best-is-yet-to-come-6\">mug personnalisé The best is yet to come\u003C\u002Fa>, déclenche une série de requêtes SQL de récupération de stock, de prix et de règles promotionnelles à chaque affichage. Multiplié par plusieurs centaines de visiteurs simultanés, c'est précisément ce type de requête qui sature un buffer pool MariaDB sous-dimensionné, bien avant que le CPU ne montre le moindre signe de tension.\u003C\u002Fp>\n\n\u003Ch2>Synthèse et prochaine étape pour votre boutique PrestaShop\u003C\u002Fh2>\n\u003Cp>Le passage d'un hébergement mutualisé à un VPS NVMe OVH n'est pas une dépense de confort : c'est une réponse technique précise à un problème d'architecture. Les hébergements mutualisés saturent dès 50 commandes par jour parce qu'ils partagent CPU, mémoire et I\u002FO disque entre des centaines de sites, sans possibilité de régler finement PHP-FPM, Nginx ou MariaDB selon le profil réel de votre boutique. Un VPS bien dimensionné, avec des pools PHP-FPM séparés, un OPcache correctement calibré et un buffer pool MariaDB proportionné à la RAM disponible, absorbe une charge largement supérieure pour un coût maîtrisé.\u003C\u002Fp>\n\u003Cp>Chaque boutique PrestaShop a néanmoins ses propres particularités : volume de catalogue, complexité des modules installés, saisonnalité du trafic. Un diagnostic chiffré reste la seule façon fiable de savoir où se situe réellement le goulot d'étranglement de votre installation actuelle.\u003C\u002Fp>\n\u003Cp>Si vous êtes marchand ou dirigeant d'une boutique PrestaShop et que vous souhaitez un état des lieux précis de votre architecture, Alexandre Carette (#4467) réalise une \u003Cstrong>Note de Mesure personnalisée\u003C\u002Fstrong> : un diagnostic technique complet couvrant la performance Core Web Vitals, la conformité SEO technique, la sécurité serveur et l'architecture globale de votre boutique. Une base concrète pour décider, chiffres à l'appui, si votre infrastructure actuelle tient réellement la charge de votre activité.\u003C\u002Fp>",[],[238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283],{"q":239,"a":240},"Pourquoi mon hébergement mutualisé PrestaShop ralentit-il à partir de 50 commandes par jour ?","Parce que le CPU, la RAM et les I\u002FO disque sont partagés avec des centaines d'autres sites sur le même serveur, et que le nombre de processus PHP simultanés autorisés par compte est plafonné bas, ce qui met les visiteurs en attente dès que le trafic augmente.",{"q":242,"a":243},"Quelle différence concrète apporte un VPS NVMe par rapport à un SSD classique ?","Le NVMe offre des débits de lecture et d'écriture nettement supérieurs au SSD SATA, ce qui réduit les temps d'accès aux fichiers PHP, aux logs et aux fichiers temporaires de session, un facteur direct de latence sous charge.",{"q":245,"a":246},"Combien de vCPU faut-il pour une boutique PrestaShop réalisant 50 commandes par jour ?","En général 4 vCPU et 8 Go de RAM constituent un point de départ raisonnable, à ajuster selon la complexité du catalogue et le nombre de modules tiers actifs.",{"q":248,"a":249},"Qu'est-ce qu'un pool PHP-FPM et pourquoi en créer plusieurs ?","Un pool PHP-FPM est un groupe de processus PHP dédiés à un usage précis. Séparer le pool du front-office public de celui du back-office administrateur évite qu'un traitement lourd en administration ne consomme les ressources destinées aux visiteurs.",{"q":251,"a":252},"Comment calculer le pm.max_children d'un pool PHP-FPM ?","En divisant la RAM disponible pour PHP-FPM par la consommation moyenne mesurée d'un processus PHP sous PrestaShop, généralement entre 60 et 120 Mo, plutôt qu'en appliquant une valeur théorique fixe.",{"q":254,"a":255},"OPcache est-il indispensable en production PrestaShop ?","Oui, OPcache met en cache le bytecode PHP compilé et évite de recompiler les fichiers à chaque requête, ce qui réduit fortement la charge CPU par page servie.",{"q":257,"a":258},"Faut-il désactiver opcache.validate_timestamps en production ?","Cela peut apporter un gain de performance, mais impose de recharger PHP-FPM manuellement après chaque déploiement de code, sans quoi les modifications ne seraient pas prises en compte immédiatement.",{"q":260,"a":261},"Quel réglage MariaDB a le plus d'impact sur les performances PrestaShop ?","L'innodb_buffer_pool_size est généralement le réglage le plus déterminant, car il conditionne la part du catalogue et des index qui reste en mémoire plutôt que d'être lue sur disque à chaque requête.",{"q":263,"a":264},"Comment savoir si ma base de données MariaDB est sous-dimensionnée ?","L'activation du slow_query_log avec un seuil bas pendant quelques jours permet d'identifier les requêtes lentes récurrentes, souvent liées à un buffer pool insuffisant ou à un index manquant sur une table de modules tiers.",{"q":266,"a":267},"Nginx remplace-t-il totalement Apache pour PrestaShop ?","Nginx peut fonctionner seul en reverse proxy devant PHP-FPM sans Apache, ce qui simplifie la pile logicielle et réduit la consommation mémoire par rapport à une configuration Apache plus PHP en module.",{"q":269,"a":270},"Le cache fastcgi_cache est-il compatible avec un compte client connecté ?","Il faut exclure explicitement les pages panier, compte client et paiement du cache pour éviter de servir du contenu personnalisé à un autre visiteur.",{"q":272,"a":273},"Combien de temps faut-il pour migrer une boutique PrestaShop du mutualisé vers un VPS OVH ?","Cela dépend du volume de données et de la complexité des modules installés, mais une migration bien préparée avec un environnement de test permet de limiter fortement le temps d'indisponibilité.",{"q":275,"a":276},"Un VPS OVH suffit-il pour une boutique en forte croissance ?","Jusqu'à un certain volume de commandes journalières, oui. Au-delà, une architecture répartissant base de données, cache et serveurs applicatifs sur plusieurs machines devient pertinente.",{"q":278,"a":279},"Comment vérifier que mon pool PHP-FPM actuel est correctement dimensionné ?","En surveillant les métriques du pool via le statut PHP-FPM et en observant si des requêtes se retrouvent en file d'attente lors des pics de trafic, signe que pm.max_children est atteint.",{"q":281,"a":282},"Quelle est la première étape avant de changer d'hébergement PrestaShop ?","Réaliser un diagnostic précis de l'architecture actuelle, incluant les temps de réponse, la consommation mémoire réelle et les requêtes SQL lentes, pour dimensionner le nouveau serveur sur des données mesurées plutôt que sur des estimations.",{"q":284,"a":285},"Est-il possible de conteneuriser Nginx, PHP-FPM et MariaDB sur un même VPS OVH ?","Oui, cette approche facilite la reproductibilité de l'environnement et les montées de version, à condition de bien allouer les ressources mémoire entre conteneurs pour éviter les conflits.","Pourquoi le mutualisé sature dès 50 commandes\u002Fjour et comment dimensionner un VPS NVMe OVH : Nginx, PHP-FPM, OPcache et MariaDB expliqués par un ingénieur PrestaShop.","2026-09-26T18:10:50.000Z",10,{"fr":208},[291],"fr",{"id":35,"slug":293,"name":101,"firstname":294,"lastname":295,"title":296,"bio":297,"image":298,"linkedinUrl":299,"url":300},"alexandre-carette","Alexandre","Carette","Architecte e-commerce, SEO technique, AIO\u002FGEO","Consultant freelance e-commerce et SEO IA (AIO\u002FGEO), basé à Metz. Architecte PrestaShop Headless, SEO technique, visibilité dans les moteurs conversationnels (ChatGPT, Perplexity, Gemini). Zéro sous-traitance : un seul interlocuteur.","\u002Falexandre-carette-256.webp","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcarette-alexandre","\u002Fauteur\u002Falexandre-carette",[],[303,317,328,340],{"id":304,"title":305,"category":212,"subcategory":306,"slug":307,"segment":308,"categoryPath":309,"path":310,"linkRewrite":311,"excerpt":312,"coverImage":313,"thumbnailImage":313,"nuxtUrl":314,"indexable":20,"datePublished":315,"dateUpdated":315,"readingTime":316,"faqCount":122},118,"Changer de domaine PrestaShop : checklist SEO et 301","methode","methode--changer-nom-domaine-prestashop-redirections-301","changer-nom-domaine-prestashop-redirections-301","devops\u002Fmethode","devops\u002Fmethode\u002Fchanger-nom-domaine-prestashop-redirections-301","devops--methode--changer-nom-domaine-prestashop-redirections-301","Transférez le domaine de votre boutique PrestaShop sans perte SEO : requêtes SQL, configuration Nginx 301, Search Console et monitoring des 404 sur 90 jours.","\u002Fblog-covers\u002F0deae2c5f8c6.webp","\u002Fblog\u002Fdevops\u002Fmethode\u002Fchanger-nom-domaine-prestashop-redirections-301","2026-09-29T06:00:04.000Z",11,{"id":318,"title":319,"category":212,"subcategory":306,"slug":320,"segment":321,"categoryPath":309,"path":322,"linkRewrite":323,"excerpt":324,"coverImage":325,"thumbnailImage":325,"nuxtUrl":326,"indexable":20,"datePublished":327,"dateUpdated":327,"readingTime":288,"faqCount":122},117,"Sauvegarde et PRA PrestaShop : reprise en moins de 30 min","methode--plan-reprise-activite-pra-sauvegarde-prestashop","plan-reprise-activite-pra-sauvegarde-prestashop","devops\u002Fmethode\u002Fplan-reprise-activite-pra-sauvegarde-prestashop","devops--methode--plan-reprise-activite-pra-sauvegarde-prestashop","Protégez votre boutique PrestaShop avec un vrai PRA : dumps chiffrés hors-site, Point-in-Time Recovery via binlogs MySQL et RTO inférieur à 30 minutes.","\u002Fblog-covers\u002Ff579737a836d.webp","\u002Fblog\u002Fdevops\u002Fmethode\u002Fplan-reprise-activite-pra-sauvegarde-prestashop","2026-09-28T06:00:02.000Z",{"id":329,"title":330,"category":212,"subcategory":306,"slug":331,"segment":332,"categoryPath":309,"path":333,"linkRewrite":334,"excerpt":335,"coverImage":336,"thumbnailImage":336,"nuxtUrl":337,"indexable":20,"datePublished":338,"dateUpdated":338,"readingTime":339,"faqCount":122},116,"Migration serveur PrestaShop sans coupure : le guide","methode--migration-serveur-prestashop-zero-downtime","migration-serveur-prestashop-zero-downtime","devops\u002Fmethode\u002Fmigration-serveur-prestashop-zero-downtime","devops--methode--migration-serveur-prestashop-zero-downtime","Découvrez le protocole complet pour migrer votre boutique PrestaShop sans perte de commande : synchronisation rsync, dump ACID, TTL DNS et recette technique.","\u002Fblog-covers\u002Fedcade207046.webp","\u002Fblog\u002Fdevops\u002Fmethode\u002Fmigration-serveur-prestashop-zero-downtime","2026-09-27T06:00:02.000Z",13,{"id":229,"title":231,"category":212,"subcategory":213,"slug":233,"segment":341,"categoryPath":211,"path":230,"linkRewrite":342,"excerpt":286,"coverImage":234,"thumbnailImage":234,"nuxtUrl":208,"indexable":20,"datePublished":287,"dateUpdated":287,"readingTime":288,"faqCount":122},"hebergement-prestashop-vps-ovh-configuration-production","devops--docker--hebergement-prestashop-vps-ovh-configuration-production"]