M1 CERI. CADET Cyril BAKAKAS Habib CAHIER DES CHARGES. Présentation de la technologie de serveur web choisie



Documents pareils
LAMP : une nouvelle infrastructure LAMP. Une architecture modulaire. Installation

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Hébergement de site web Damien Nouvel

Drupal : Optimisation des performances

Hébergement de sites Web

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

«clustering» et «load balancing» avec Zope et ZEO

Tests de montée en charge & Haute disponibilité

L3 informatique TP n o 2 : Les applications réseau

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

ADF Reverse Proxy. Thierry DOSTES

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

2 disques en Raid 0,5 ou 10 SAS

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

«Clustering» et «Load balancing» avec Zope et ZEO

Guide d installation JMap 5.0

MANUEL D INSTALLATION D UN PROXY

THEME : Mise en place d une plateforme d enseignement à distance

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Administration de Citrix NetScaler 10.5 CNS-205-1I

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

Architectures en couches pour applications web Rappel : Architecture en couches

SQUID Configuration et administration d un proxy

Dispositif e-learning déployé sur les postes de travail

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

1 LE L S S ERV R EURS Si 5

Linux sécurité des réseaux

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

Un serveur web léger et ouvert

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

Serveurs mutualisés modulaires

NetCrunch 6. Superviser

Apache en tant que reverse proxy

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

DOCUMENTATION ADMINISTRATEUR

Le serveur HTTPd WASD. Jean-François Piéronne

avast! EP: Installer avast! Small Office Administration

Le serveur web Apache

Le filtrage de niveau IP

Disponibilité et fiabilité des services et des systèmes

CAHIER DES CHARGES D IMPLANTATION

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tests de performance du matériel

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Dossier d analyse et de comparaison 2012

UE5A Administration Réseaux LP SIRI

Squid. Olivier Aubert 1/19

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Performance, rendement Vs Evolutivité

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

MailStore Server 7 Caractéristiques techniques

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Formation owncloud Thierry DOSTES - Octobre

Comment mettre en ligne un site WordPress local

Programmation Web. Madalina Croitoru IUT Montpellier

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Retour d exprience sur le cluster du CDS

CAHIER DES CLAUSES TECHNIQUES PARTICULIERES (CCTP) Valant ACCORD-CADRE. Procédure d appel d offres ouvert - N

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.


LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Cloud public d Ikoula Documentation de prise en main 2.0

Architectures web/bases de données

Mon Sommaire. INEO.VPdfdf. Sécurisations des accès nomades

Installation de Premium-RH

Maintenir Debian GNU/Linux à jour

FileMaker Server 14. Guide de démarrage

07/03/2014 SECURISATION DMZ

Guide d'installation. Release Management pour Visual Studio 2013

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

CAHIER DE S CHARGE S Remote Workload Manager

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Serveur Web Apache - SSL - PHP Debian GNU/Linux

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Competence Management System (Système de Gestion de Compétences)

MODULES 3D TAG CLOUD. Par GENIUS AOM

Services Réseaux - Couche Application. TODARO Cédric

Dans l'épisode précédent

Joomla! Création et administration d'un site web - Version numérique

Pré-requis installation

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Gestion collaborative de documents

TP Service HTTP Serveur Apache Linux Debian

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

REPARTITION DE CHARGE LINUX

Déploiement d un serveur courriel dédié pour entreprise

BTS SIO Dossier BTS. PURCHLA Romain

Gestion d'un parc informatique avec OCS INVENTORY et GLPI

PG208, Projet n 3 : Serveur HTTP évolué

Configuration Matérielle et Logicielle AGORA V2

Pré-requis installation

Transcription:

2011 M1 CERI CADET Cyril BAKAKAS Habib CAHIER DES CHARGES Présentation de la technologie de serveur web choisie

TABLE DES MATIERES AVANT PROPOS... 4 CONTEXTE... 4 Finalité... 4 Pres-requis... 4 PRESENTATION DES SERVEURS WEB... 5 Apache... 5 Nginx... 5 Lighttpd... 6 Comparaison des modules... 6 Les principaux modules... 7 Le module rewrite... 7 Le module evasive... 8 Le module LOG... 8 TESTS DE PERFORMANCE... 10 Introduction... 10 Schémas... 10 Protocole... 10 Contenu Statique... 11 SIEGE... 11 APACHE BENCH... 13 Contenu Dynamique... 14 SIEGE... 14 APACHE BENCH... 15 Emprunte mémoire et CPU... 15 TESTS DE CHARGE... 18 Introduction... 18 Protocole... 18 Scénario 1... 18 Scénario 2... 19 Disponibilité... 20 Temps total de durée du test... 21 Utilisation mémoire... 22 Utilisation CPU... 23 Estimation... 24 2

CONCLUSION... 25 3

AVANT PROPOS Nous participons au développement et à la mise en production d un jeu de stratégie Web moderne (ajax/jquery, php5/symfony/doctrine) utilisant des techniques innovantes. Plus précisément nous déterminerons l'architecture réseau (serveur web, mysql, php) permettant un fonctionnement optimal du jeu de stratégie. Cette recherche de la configuration adaptée comportera deux phases : une première phase pendant laquelle le serveur web sera choisit, parmi trois possibilités, après une batterie de tests qui serons explicités, puis une deuxième phase pendant laquelle le serveur sera optimisé dans son interaction avec les composantes php et mysql. Ce cahier des charges a pour but de justifier la technologie du serveur web à utiliser. CONTEXTE FINALITE Le choix des serveurs web se fera parmi les trois solutions les plus populaires sur internet actuellement : Apache, Lighttpd et Nginx. Nous pouvons classer ces serveurs selon deux catégories : synchrone ( apache : orienté processus) et asynchrone ( nginx, lighttpd ). Un serveur orienté processus traite chaque processus simultané en créant un processus (thread) nouveau, on obtient donc un processus par requête client. Au contraire, un serveur asynchrone traite les requêtes dans un seul ou peu de processus. On en déduit que les serveurs asynchrones devraient utiliser moins de mémoire et être plus performant que le serveur synchrone. Cette intuition devra être confirmée ou infirmée par les tests que nous conduirons. Par ailleurs, nous devrons fournir un travail en synergie avec les autres groupes du projet en vue de mettre en production et pérenniser le jeu. Cette coopération prendra la forme de réunions entre les différents groupes et éventuellement la mise en place d'un espace collaboratif ( wiki, chat etc ) et nous permettra d'atteindre l'objectif de publication du jeu optimisé, c'est à dire un jeu tournant sur un serveur web doté d'une stratégie de continuité de service efficace. PRES-REQUIS Nous disposons d une machine linux Debian Lenny 64 bits doté de 2Go de mémoire RAM et d un processeur Intel Pentium D doté de 2,80GHz et de 2 coeurs. 4

PRESENTATION DES SERVEURS WEB APACHE Synchrone (un processus par requête). Ressources mémoire relativement élevée. Apache, est un logiciel de serveur HTTP produit par l'apache Software Foundation. C'est le serveur HTTP le plus populaire du Web (Apache représente 50,93% des parts de marché). C'est un logiciel libre avec un type spécifique de licence, nommée licence Apache. Apache est conçu pour prendre en charge de nombreux modules lui donnant des fonctionnalités supplémentaires : interprétation du langage Perl, PHP, Python et Ruby, serveur proxy, Common Gateway Interface, Server Side Includes, réécriture d'url, négociation de contenu, protocoles de communication additionnels, etc. Néanmoins, il est à noter que l'existence de nombreux modules Apache complexifie la configuration du serveur web. En effet, les bonnes pratiques recommandent de ne charger que les modules utiles : de nombreuses failles de sécurité affectant uniquement les modules d'apache sont régulièrement découverts. Les possibilités de configuration d'apache sont une fonctionnalité phare. Le principe repose sur une hiérarchie de fichiers de configuration, qui peuvent être gérés indépendamment. Cette caractéristique est notamment utile aux hébergeurs qui peuvent ainsi servir les sites de plusieurs clients à l'aide d'un seul serveur HTTP. Pour les clients, cette fonctionnalité est rendue visible par le fichier.htaccess. NGINX Asynchrone (Un processus ou peu de processus gèrent les requêtes). Nginx est un reverse proxy et serveur web, ainsi qu'un proxy mail (IMAP et POP3), sous licence BSD. Igor Sysoev a commencé à le développer en 2002 pour un site russe à fort trafic, et depuis la popularité de nginx n'a cessé de croître. Selon netcraft, 6,5% des sites web dans le monde seraient servis par nginx. Nginx est réputé pour ses performances et sa faible consommation mémoire. Cela vient de son architecture : au lieu de dédier un processus ou un thread (processus) pour traiter chaque requête, il utilise un modèle événementiel. Cela lui permet notamment de tenir un grand nombre de connexions simultanées sans voir sa consommation mémoire s'envoler. Des sites connus comme Wordpress, github et Sourceforge l'ont choisi pour cette raison. Nginx est également développé selon une approche modulaire : il est composé d'un cœur réduit et d'un grand nombre de modules que l'on peut choisir d'inclure à la compilation. 5

Comme il est facile de développer un module, il en existe de nombreux et qui couvrent une large palette de fonctionnalités, des plus essentielles (SSL, fastcgi, gzip, rewrite, log) aux plus exotiques (servir des fichiers GIF vides, afficher des pages d'index aléatoires). LIGHTTPD Lighttpd est un serveur web (HTTP) qui, de par sa légèreté, se veut rapide. Il supporte un grand nombre de fonctionnalités comparables à celles d'apache (comme les rewrite, fast-cgi, proxy, etc.) pour des performances aussi bonnes sinon meilleures dans les tests faits par Lighttpd. Par rapport à Apache, il ne supporte pas les fichiers htaccess ou encore htpasswd. Ces deux problèmes sont contournables si vous avez accès à la configuration de votre serveur. Lighttpd se trouve dans le top cinq des serveurs les plus utilisés dans le monde. Le principal désavantage de lighttpd face à son concurrent Apache est de ne pas supporter les fichiers.htaccess : les directives ne sont évaluées qu'une seule fois, au démarrage du serveur, et nécessitent de le redémarrer afin d'être prises en compte COMPARAISON DES MODULES Nginx module Apache module Lighttpd Caractéristiques du module module HTTP Upstream Module mod_proxy_balan cer mod_proxy_co re Ce module permet la répartition de charge Access Module mod_access mod_access Contrôle de l accès au serveur Auth Basic Module mod_auth mod_auth Protection à l aide d une authentification de base via http AutoIndex Module mod_autoindex mod_dirlisting Permet de faire des listings automatiques de répertoire (ie commande ls unix) Browser Module mod_setenvif? Création de variables d environnement dépendant des caractéristiques de la requête Charset Module none none Permet l encodage du texte au format précisé dans le module Empty GIF Module none none Garde une image transparente en mémoire qui peut être servie rapidement FastCGI Module mod_fastcgi, mod_fcgid mod_fastcgi Permet l interaction avec le protocole fastcgi GEO Module mod_geoip mod_geoip Permet de créer des variables dont la valeur dépend de l adresse IP. Permet d envoyer du contenu en fonction de la géolocalisation du 6

Gzip Compression Module Gzip Pre- Compression Module HTTP Headers Module HTTP Referer Module client mod_deflate mod_deflate Permet la compression des données en sortie du serveur à la volée none none Avant la compression ce module s assure qu il n existe pas de fichier précompressé pour ne pas avoir à compressé le même fichier chaque fois qu il est demandé mod_headers mod_setenv Fournit des directives pour contrôler et modifier les requêtes http et l entête des réponses mod_setenvif? Bloque l accès au site selon que certaines caractéristiques de la requête ne correspondent pas à l expression spécifiée Limit Zone Module mod_limitipconn mod_evasive Permet de limiter le nombre de connections simultanées pour une session ou d une adresse spécifique Log Module mod_log_config mod_accesslog Permet de gérer le fichier de log des clients Proxy Module mod_proxy mod_proxy Permet l utilisation de serveur proxy Rewrite Module mod_rewrite mod_rewrite Permet de réécrire les url SSI Module mod_include mod_ssi Ce module fournit un filtre qui s appliquera aux fichiers avant d être envoyer au client UserID Module mod_usertrack mod_usertrack Permet l utilisation de cookies afin d identifier un client déjà précédemment connecté FLV Module mod_flvx mod_flv_strea Permet d utiliser directement du ming serveur des fichiers flash SSL Module mod_ssl SSL Permet de supporter https ssl tls LES PRINCIPAUX MODULES LE MODULE REWRITE Ce module en particulier beaucoup plus de fonctionnalités à nginx qu une simple série de directives. Il définit une façon nouvelle de traiter les requêtes clients. Au début, le but de ce module est de faire de la réécriture d url. Ce mécanisme permet de se débarrasser des url peut esthétiques, peu porteuse d information et contenant plusieurs paramètres, par exemple instance, http://example.com/article.php?id=1234&comment=32, certains paramètres sont particulièrement peu informatif. Apres la réécriture de l url, on introduit dans l url des informations utiles, l url de l exemple précédent devient http://website.com/article-1234-7

32-US-economy-strengthens.html. La réécriture d url permet aussi une indexation plus aisée par les moteurs de recherche Dans lighttpd le module rewrite existe avec un autre module très proche : mod_redirect. La différence entre rewrite et redirect est que le rewrite se déroule directement dans le serveur tandis que la redirection d une requête est réalisée en envoyant une entête à l utilisateur lui disant où la page se trouve vraiment. Cette différence est importante lorsque le choix de l un ou l autre doit se faire. Dans apache le module rewrite supporte un nombre illimité de règles qui elles mêmes comptent d autres règles conditionnées attachées, pour produire un mécanisme de manipulation d url puissant et flexible. LE MODULE EVASIVE Le mod_evasive de lighttpd est l équivalent de mod_limitipconn d apache et l équivalent de limit zone module de nginx. Ce module permet de limiter la quantité maximale de connections simultanée sur le serveur pour une certaine zone Dans nginx la première étape consiste à définir la zone en utilisant la directive limit_zone puis on y limite les connections simultanées en utilisant limit_conn. Si la limite est atteinte, toutes les requêtes supplémentaires concurrentes auront comme réponse 503 service unaivalable Dans lighttpd le mod_evasive est un module très simple pour limiter les connexions par adresse ip. Ainsi on utilise le paramètre : evasive.max-conns-per-ip Dans apache on peut limiter le nombre de connexion par utilisateur, par vhost ou par charge moyenne. LE MODULE LOG Log module pour nginx, mod_log_config pour apache et mod_accesslog pour lighttpd. Ce module contrôle la façon dont les requêtes sont loguées par le serveur. Dans nginx la directive access_log permet de déterminer le chemin, le format et la taille du tampon du fichier de log. Nginx supporte une puissante séparation en fonction du lieu. La directive open_log_file_cache met en place le cache qui stocke les descripteurs de fichiers de log fréquemment utilisés Dans lighttpd le module mod_accesslog a pour option : accesslog.use-syslog et envoi l accesslog à syslog. Avec accesslog.filename le nom du fichier ou l accesslog devrait être écrit si syslog n est pas utilisé. On définit aussi l accesslog.format, le format du fichier de log. 8

Dans apache mod_log_config propose un traitement flexible de log des requêtes clients. Les logs sont écrits dans un format personnalisable et peuvent être écrit directement dans un fichier ou dans un programme externe. Les logs conditionnels sont possible si bien que les requêtes individuelles peuvent être inclues ou exclues des logs en fonction des caractéristiques des requêtes. Trois directives sont fournies par le module : Transferlog pour créer un fichier de log, LogFormat pour configurer un format d utilisation et CustomLog pour définir le fichier de log et le format en même temps. 9

TESTS DE PERFORMANCE INTRODUCTION Les tests de performances déterminerons laquelle des technologies est la meilleure. Pour cela nous disposons d une autre machine qui servira à stresser notre serveur web. La machine de benchmark simulera des connexions utilisateurs envoyant plusieurs requêtes en même temps. Il existe des outils qui permettent de faire cela. Dans notre protocole nous nous sommes basés sur les outils ApacheBench et Siege. SCHEMAS Connexions Utilisateurs PROTOCOLE Le protocole nous permet d obtenir un détail des performances globales des serveurs. Il nous permettra de voir quelle technologie de serveur nous allons adopter. Les différents tests ont été effectué sur un code statique (HTML) et dynamique (PHP). Nous simulerons l envoie de 8000 requêtes en tous pour le code HTML et 1000 requêtes pour le PHP. Nous ferons varier le nombre de requêtes envoyées en parallèle pour évaluer les performances. 10

Avec Apachebench : ab n8000 -cx http://javel.univ-avignon.fr:(8080-8181-9090)/code_à_tester Le paramètre n définit le nombre de requête totale à envoyer. Le paramètre c correspond aux requêtes envoyées en parallèle. Avec Siege : siege -d0 -rx -cx http://javel.univ-avignon.fr:(8080-8181-9090)/code_à_tester Le paramètre r correspond au nombre de requête envoyées pour chaque utilisateur. Le paramètre c correspond au nombre d utilisateur que l on veut simuler. Ici pour obtenir un nombre total de requête égal à 8000, il faudra diviser 8000 par c. CONTENU STATIQUE SIEGE Ce graphique nous montre la performance globale des serveurs, leur facilité à traiter les requêtes rapidement. 35 Performance serveur 30 25 Concurrency 20 15 10 5 0 1 20 50 100 200 APACHE 0,97 5,79 19,63 22,03 30,56 NGINX 0,94 5,78 14,2 9,78 15,45 LIGHTTPD 0,96 10,27 14,9 12,57 22,26 Nb Utilisateur 11

Le paramètre concurrency de Siege correspond au nombre moyen de connexions simultanées traitées par le serveur. Plus ce nombre est petit plus le serveur traite efficacement les requêtes des utilisateurs. Plus ce nombre est grand moins le serveur est performant car il met du temps à répondre par rapport aux requêtes entrantes. Il s agit d un paramètre significatif des performances d un serveur. En abscisse nous avons le nombre d utilisateurs. Nous constatons que les serveurs NGINX et LIGHTTPD se comportent mieux que le serveur APACHE sur ce test. Ce graphe nous montre une moyenne des temps pour répondre à chaque requête simultanée des utilisateurs. 0,14 0,12 Temps de réponse Temps deréponse en s 0,1 0,08 0,06 0,04 0,02 0 1 20 50 100 200 APACHE 0 0,01 0,03 0,07 0,12 NGINX 0 0,01 0,02 0,04 0,03 LIGHTTPD 0 0,01 0,02 0,04 0,04 Nb Utilisateur En abscisse nous avons toujours le nombre d utilisateurs, en ordonnée nous avons le temps de traitement moyen des requêtes. On relève le temps de réponse de chaque serveur. La performance est ici inversement proportionnelle à l ordonnée. NGINX et LIGHTTPD résistent mieux au test qu APACHE. 12

APACHE BENCH Temps traitement Temps moyen de traitement en s 45 40 35 30 25 20 15 10 5 0 1 20 50 100 200 APACHE 0,734 2,038 5,254 12,683 38,793 NGINX 0,571 1,955 4,891 9,855 19,439 LIGHTTPD 0,526 1,694 4,852 10,433 17,494 Nb Utilisateur En utilisant Apachebench nous voyons que le comportement pour ce test est similaire au test précédent avec siège. Nous constatons ici encore un meilleur comportement de NGINX et LIGHTTPD notamment lorsque le nombre d utilisateur augmente. Pour traiter du code statique nous remarquons que les serveurs NGINX et LIGHTTPD sont supérieurs à APACHE. Cela est probablement dû à la gestion asynchrone des requêtes clients de NGINX et LIGHTTPD. 13

CONTENU DYNAMIQUE SIEGE Performance serveur Concurrency 200 180 160 140 120 100 80 60 40 20 0 1 20 50 100 200 APACHE 1 19,85 48,7 98,12 175,37 NGINX 1 19,84 49,72 95,33 176,28 LIGHTTPD 1 19,95 49,81 95,22 177,16 Les performances des trois serveurs sont globalement identiques. Cela va se jouer au niveau des temps de réponse. Temps de réponse Temps de réponse en s 10 9 8 7 6 5 4 3 2 1 0 1 20 50 100 200 APACHE 0,09 0,9 2,22 4,08 8,12 NGINX 0,07 0,92 2,3 4,4 9,09 LIGHTTPD 0,08 0,91 2,29 4,6 9,51 Nb Utilisateur 14

Nous pouvons constater que les temps de réponse sont globalement identiques, Apache à une légère avance. Mais cette avance n est pas significative. APACHE BENCH Temps de traitement en ms Temps traitement 14000 12000 10000 8000 6000 4000 2000 0 1 20 50 100 200 Nb utilisateurs APACHE 89,524 796,349 2000,615 4008,252 8202,846 NGINX 91,515 909,509 2272,783 4564,273 11918,369 LIGHTTPD 94,337 920,879 2320,394 4721,892 9669,542 Ce graphique, comme le graphique précédent nous prouve une fois de plus que les performances d Apache ne sont pas significatives. EMPRUNTE MEMOIRE ET CPU Les tests effectués sur le code PHP ne nous ont pas montré de réelles différences significatives entre les serveurs. C est pour cela que nous avons effectué le test sur l utilisation de la mémoire et du processeur. 15

Utilisation mémoire RAM en Ko 1600000 1400000 1200000 1000000 800000 600000 400000 200000 0 5 10 15 20 25 30 35 40 45 50 55 APACHE 1E+06 1E+06 1E+06 959636 802032 656964 521524 418512 307188 215292 264096 NGINX 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 LIGHTTPD 2E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 1E+06 Nous pouvons constater qu Apache consomme beaucoup plus de mémoire par rapport à Nginx et Lighttpd. 120 100 Utilisation CPU CPU en % 80 60 40 20 0 5 10 15 20 25 30 35 40 45 50 55 APACHE 97 24 0 0 0 0 0 0 0 0 49 NGINX 97 22 0 0 0 0 0 0 0 0 97 LIGHTTPD 97 24 0 0 0 0 0 0 0 48 92 L utilisation du processeur quant à lui est identique pour les trois. Le processeur est sollicité du début jusqu à la fin du test. 16

L évaluation du temps de réponse en dynamique nous montre que l avance d Apache sur Nginx et Lighttpd n est pas très importante. Etant donné que les performances de Nginx en statique sont, elles, significativement plus importantes que celle d Apache, et que l utilisation mémoire de Nginx est nettement plus satisfaisante que celle d Apache. Nous optons pour Nginx. 17

TESTS DE CHARGE INTRODUCTION Le test de charge va permettre de trouver le point limite ou les performances du serveur décroissent, il va permettre de trouver le nombre d utilisateur simultané maximum que le serveur physique peut supporter à l heure actuelle. Des diagnostiques de la mémoire RAM et du processeur seront également établis. PROTOCOLE Nous utiliserons l outil Siège pour simuler les connexions utilisateurs. Siège ira lire dans un fichier texte les requêtes effectuées par les utilisateurs. Ces requêtes solliciteront simultanément du code dynamique (code PHP) et statique (HTML). Pour cela deux scénarios ont été établis. SCENARIO 1 Le premier scénario à pour but de montrer les performances du serveur lors du traitement de fichier statique lourd (unique image lourde). Notre scénario 1 : http://javel.univ-avignon.fr:8181/testdecharge/bench_php.php http://javel.univ-avignon.fr:8181/testdecharge/munich.jpg (7,5 Mo) La première requête sollicitera le serveur Nginx pour le code PHP. La deuxième requête sollicite le serveur Nginx pour traiter le code statique contenant une image lourge de 7.5 Mo. Nous simulerons au total 1000 requêtes par ligne du fichier précédent. Nous ferons ensuite varié le paramètre «c» (nombres d utilisateurs) pour obtenir des résultats exploitable. Lancement du benchmark : siege -f scénario1 d0 r10 c200 En lançant Siege avec de tels paramètres, nous simulons la connexion de 200 utilisateurs, exécutant chacun 10 requêtes. Ce qui fait 2000 requêtes au total. 18

SCENARIO 2 Le second scénario à pour but de montrer les performances du serveur lors du traitement de plusieurs fichier statique léger (plusieurs image légère dont la taille totale fait 7.5 Mo). Notre scénario 2 : http://javel.univ-avignon.fr:8181/testdecharge/bench_php.php http://javel.univ-avignon.fr:8181/testdecharge/1.jpg http://javel.univ-avignon.fr:8181/testdecharge/2.jpg http://javel.univ-avignon.fr:8181/testdecharge/3.jpg http://javel.univ-avignon.fr:8181/testdecharge/4.jpg http://javel.univ-avignon.fr:8181/testdecharge/5.jpg http://javel.univ-avignon.fr:8181/testdecharge/6.jpg http://javel.univ-avignon.fr:8181/testdecharge/7.jpg http://javel.univ-avignon.fr:8181/testdecharge/8.jpg http://javel.univ-avignon.fr:8181/testdecharge/9.jpg 7.5 Mo Nous simulerons également 1000 requêtes par ligne du scénario, ce qui nous fait un total de 10000 requêtes. 19

DISPONIBILITE Disponibilité : c est le pourcentage de connexions socket réussies. Lorsqu une connexion socket est échouée, l utilisateur verra une page d erreur. Il est donc impératif de garder ce paramètre à 100% pour un serveur. 102 Disponibilité 100 98 96 94 92 90 88 86 84 20 50 100 200 400 500 Scénario 1 100 100 100 100 100 90,15 Scénario 2 100 100 100 99,99 99,7 98,5 Nous pouvons constater que le scénario 1 est plus efficace que le scénario 2. Le scénario 1 peut supporter jusqu à 400 utilisateurs simultanées, tandis que le scénario 2 peut supporter un peu moins de 200 utilisateurs. Nous pouvons déjà dire que l utilisation de moins de requête malgré la taille du fichier recherché par celle-ci influe sur les performances d un serveur. Typiquement, un fichier de 7 Mo est traité plus rapidement que sept fichiers de 1 Mo. 20

TEMPS TOTAL DE DUREE DU TEST 80 70 Temps total de durée du test Temps total en seconde 60 50 40 30 20 10 0 20 50 100 200 400 500 Scénario 1 11,5 11,57 11,64 11,62 20,72 48,61 Scénario 2 53,32 54,97 57,62 57,88 67,2 70,9 Nous avons mesuré à chaque fois, le temps total de durée du test et nous pouvons constater que le scénario 1 (2 requêtes), est traité plus rapidement (il prend moins de temps). Pour conclure sur ces tests nous pouvons d ores et déjà avancer le fait que l utilisation d image fragmentée influe sur les performances du serveur. En effet mieux vaut exécuter 1 seule requête de grosse taille plutôt que plusieurs de petite taille. Ces conclusions permettront d avancer sur la démarche de développement qu il faudra adopter (utilisation de sprite). 21

UTILISATION MEMOIRE Le scénario 1 étant celui que nous allons adopter, nous avons relevé son emprunte mémoire lors de son test. Nous pouvons conclure que la quantité de RAM pour le serveur est correcte car elle ne descend pas en dessous de 1,30 Go. Une mémoire RAM disponible de 1.3 Go est amplement suffisant pour le serveur. RAM en Ko 1500000 mémoire libre 1450000 1400000 1350000 1300000 Temps en s 1250000 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 mémoire libre 22

UTILISATION CPU Ce graphique nous montre bien que lors du test le processeur du serveur est sollicité jusqu à atteindre 0% de processeur non utilisé. Le processeur travaille à fond quasiment du début jusqu à la fin du test. Nous pouvons en conclure que le processeur actuel n est pas suffisamment performant pour répondre aux besoins en ressource nécessaire. % 120 % CPU libre 100 80 60 % CPU libre 40 20 0 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 Temps en s 23

ESTIMATION Le cahier des charges sert, à partir de notre configuration matérielle de test, d estimer nos futurs besoins en termes de mémoire et de puissance processeur en fonction du nombre d utilisateurs. Nous avons définit plus haut la limite du nombre d utilisateur que le serveur peut supporter : 400 utilisateurs. Regardons maintenant combien de bogomips (millions d instructions par seconde), combien de mémoire RAM, chaque utilisateur consommera. Pour cela nous regardons sur notre serveur sa puissance de calcul : cat /proc/cpuinfo bogomips : 5586.19 5586.19 bogomips sera utilisé pour 400 utilisateurs. Ce qui nous donne 13.965 bogomips par utilisateur. Pour l utilisation de la mémoire nous reprenons les résultats obtenus page 22. Mémoire libre (point critique) : 1335560 ko = 1.33 Go Mémoire totale : 2 go Mémoire utilisée : 2 1.33 = 0.67 Go = 670 Mo pour 400 utilisateurs Pour 1 utilisateur = 670/400 = 1,675 Mo 24

CONCLUSION Nous avons pus déterminer dans un premier temps quelle technologie de serveur web nous allons adopter pour héberger le jeu. Après différents tests significatifs nous avons conclu que la solution Nginx était la plus intéressante. Elle est notamment supérieure pour le traitement de fichiers statiques et plus intéressante en terme d emprunte mémoire pour le traitement de fichiers dynamiques. Nous avons déterminé grâce à notre serveur de test les dimensions idéales d un serveur futur en fonction du nombre d utilisateurs. Nous avons également prouvé que le serveur est plus performant lorsqu il y a moins de requête à traiter. Cela nous indique que pour la partie modélisation et codage, l utilisation de sprite est vivement conseillée. Ce cahier des charges nous permettra au second semestre de pouvoir effectué l optimisation, la configuration poussée de notre serveur. 25