• Skip to main content
  • Skip to header right navigation
  • Skip to after header navigation
  • Skip to site footer
  • Facebook
  • Twitter
  • Instagram
Lesjeudis

Blog Les Jeudis

Actualité Informatique et Digital

  • Tous les annonces
  • Employeurs
  • Développement
  • Réseaux et Systèmes
  • Digital
  • Marché de l’emploi
  • Conseils
  • Evénements
  • Formation
nginx vs apache

Apache vs. Nginx ? Comment réaliser un comparatif réaliste

10/03/2021 par Korben

Il y a un petit moment maintenant, avec Léo nous avons revu l’architecture serveur de Korben.info l’un des choix que nous avons du faire concernait le serveur web. Un choix assez classique pour les experts du web et les devOps, mais  surtout l’occasion de vous offrir le retour de Léo en matière de comparatif entre Apache ou Ninx.

En effet, beaucoup de benchmarks trouvables en ligne utilisent la configuration par défaut des serveurs. Mais ces configurations sont-elles comparables ? Comment d’y retrouver quand on est un développeur soucieux de son environnement technique ?


Depuis que Léo est tombé sur les dépôts GitHub de H5BP, un groupe de dev bénévoles qui font un super travail en proposant des bases de configuration les plus en adéquation possible avec les standards web, il est possible d’avoir une base solide de comparaison. 

Grâce à ces configurations proposées, vous obtenez ainsi des réponses HTTP très homogènes et impeccables, quel que soit le logiciel utilisé comme serveur.

Et en particulier des configurations pour Apache httpd et Nginx, les deux principaux serveurs web. Et on obtient donc 3 configurations vraiment comparables, car parfaitement calibrées pour une utilisation à destination du web.

  • Un Nginx conforme
  • Un Apache httpd conforme
  • Un Apache httpd via un .htaccess conforme

Léo s’est amusé à faire de tests de performance sur les trois configurations, pour se faire une idée, et vous partager les résultats. 

Il a d’abord fais tourner un outil de test nommé k6 (open source, dédié aux tests de charge) pendant 20 secondes avec une montée en puissance. Pour cela, on écrit un petit script pour manipuler k6, qui utilise un moteur JavaScript.

import { check } from 'k6'
import * as http from 'k6/http'

export const options = {
  stages: [
    { duration: '10s', target: 100 },
    { duration: '5s', target: 100 },
    { duration: '5s', target: 0 }
  ],
  thresholds: {
    checks: [{
      threshold: 'rate>0.1',
      abortOnFail: true
    }]
  },
  hosts: {
    'server.localhost': '127.0.0.1'
  }
}

export default function () {
  check(http.get('http://server.localhost/test.html'), {
    'is status 200': (r) => r.status === 200
  })
}

Chacune de ses configurations a donc reçu environ 50 000 requêtes, puis il a extrait la mesure de la durée de la requête.

Pour visualiser les résultats, il a choisi d’agréger les valeurs dans des diagrammes boîte à moustaches (oui c’est rigolo comme nom). Pour rappel, une boite à moustache est structurée de la manière suivante.

diagrammes boîte à moustaches

Comme outils pour construire ce type de diagramme, il utilise notamment un notebook Jupiter. Basé sur Python, c’est l’environnement idéal pour des manipulations statistiques sans prise de tête. Pour les curieux, le notebook est disponible dans un gist.

graph httaccess, httpd and nginx

Comparatif des temps de réponse en millisecondes des trois configurations en boites à moustache sur axe logarithmique.Si les médianes (lignes rouges) ne sont pas très éloignées les unes des autres, l’utilisation d’un fichier .htaccess amène quand même beaucoup de ralentissement.

Un maximum à 95% plus élevé, un écart-type plus grand (illustrant des temps de réponse moins prévisibles). Les points au delà de la limite à 95% sont considérés comme aberrants, mais leur présence plus marquée avec le .htaccess renforce le sentiment d’instabilité.

Dès que le module d’interprétation des .htaccess est désactivé, httpd et nginx sont vraiment similaires en termes de performance.

Léger gain pour nginx, un poil plus étalé vers le bas, ce qui n’est pas sans illustrer son potentiel de cache. Ce test a permis, entre autres, la sélection du serveur en place sur Korben.info.

Ainsi, nous avons choisi nginx qui, avec ses fonctionnalités de cache avancées, à une efficacité redoutable lors des montées en charge.Bien sûr, sa configuration repose en grande partie sur le boilerplate H5BP.

En tant que mainteneur de ces configurations H5BP, Léo aussi mis en place des benchmarks automatiques sur chacun de dépôts à l’aide de h5bp/server-configs-test, pour suivre l’évolution de ces configurations et des logiciels au fil des années.

J’espère que cet article technique vous aura permis en tant que développeur d’y voir un peu plus clair sur Apache et Nginx et notamment sur la méthode que vous pouvez mettre en place pour justement comparer leurs performances et leur comportement avec votre applicatif de manière égalitaire.

Si vous avez des questions, rendez-vous sur le forum de Korben.

Categorie: Développement, Réseaux et Systèmes

About Korben

Manuel Dorne, aussi connu comment Korben dans l’industrie technologique française. Il est un blogueur connu dans des conférences et des événements informatiques. Il est également auteur de livres et youtubeur.
La spécialité de Korben est la cybersécurité et la culture geek.
Manuel gère et dirige Korben.info, un blog technique avec une audience de plus d’un million de personnes.
Korben participe souvent à des programmes de podcasts et publie de nombreux contenus sur différentes chaînes YouTube.
Manuel (korben) est le co-fondateur de ‘YesWeHack’ une société spécialisée dans la cybersécurité.

Previous Post:Frameworks javascript: angular, react, vue, nodeJSFrameworks Javascript
Next Post:6 conseils pour bien choisir votre thème WordPressles cms wordpress

Reader Interactions

Comments

  1. Aureliano

    09/07/2021 at 08:26

    Merci. Très intéressant et beaucoup de pistes utiles pour approfondir.

Leave a Reply

Your email address will not be published. Required fields are marked *

Sidebar

Déposez CV

Rechercher

Nos meilleurs articles

Bannière Réseau Informatique et 'data center'

Fonctionnement d’un réseau informatique : Ce qu’il faut savoir

Bannière Développement de jeu vidéo

Développement de jeux vidéo : Ce qu’il faut savoir

Le processus du RPA (Robotic Process Automation)

La Robotic Process automation, aux frontières du machine learning et de l’IA

Modeles React JS

10 modèles React gratuits que vous pouvez utiliser pour vos projets

Data centre avec serveurs

La sécurité proactive dans le Cloud

smartphone avec l'appli de CB et les textes: iOS, Android et windows

Développer une application mobile pas à pas

Un programmeur en t-shirt 'code master' fait semblant d'utiliser des langages informatiques sur un panneau interactif

Comment se former au métier de développeur informatique ?

Les erreurs courantes en C# à éviter pour exceller en tant que développeur

Tout savoir sur Angular 18

Le Guide Complet 2024 des Certifications Microsoft

Scrum

Repenser Scrum pour libérer son potentiel

Prompt Engineering

Le Prompt Engineering : L’art de converser avec l’intelligence artificielle

Categories

  • Blockchain (14)
  • Conseils (58)
  • Design (38)
  • Développement (166)
  • Digital (298)
  • Divers (7)
  • E-commerce (13)
  • Evénements (24)
  • Fiche métier (2)
  • Formation (16)
  • Interviews (35)
  • Marché de l'emploi (69)
  • Marketing (127)
  • Méthodologie (10)
  • Réseaux et Systèmes (33)
  • Web (149)

Nos Categories

Blockchain
Conseils
Méthodologies
Design
Développement 
Digital
E-commerce
Evénements
Formation
Interviews
Marché de l’emploi
Marketing
Réseaux et Systèmes
Web

Candidats

Emploi par région
Emploi par métier
Fiche métiers informatiques
Nous contacter
Vous êtes recruteur ?

A Propos

Conditions générales d’utilisation
Politique de confidentialité
Droit d’accès aux données personnelles (cookies)

Social

Facebook
Twitter
Linkedin

Les Jeudis

© Copyright 2023 LesJeudis. Tous droits réservés.