• # Concurrence ?

    Posté par  (site web personnel) . Évalué à 3.

    Il est très difficile de répondre pour plusieurs raisons et l'une d'elle est que tu ne donnes pas assez de détails.
    Si je résume l'énoncé de ton problème j'ai seulement :
    - serveur web
    - 50000 users (visites ?)

    Ca fait peu de paramètres et il manque une donnée importante en relation avec les 2 que tu nous donne :
    - combien de visites simultanées ?

    c'est 50000 visites simultanées, à la seconde ou sur une journée ?
    • [^] # Re: Concurrence ?

      Posté par  (site web personnel) . Évalué à 4.

      Et ils font quoi les 50 000 users ? Ils téléchargent des ISOs Debian, ils font du trading ou ils jouent à Yeti Sport ?

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

      • [^] # Re: Concurrence ?

        Posté par  . Évalué à 0.

        Il s'agit principalement d'un site d'information!!
        • [^] # Re: Concurrence ?

          Posté par  (site web personnel) . Évalué à 4.

          et le code ?

          code mal écrit ? bien écrit ?

          complexité intrinsèque du code ? ( O(1) , O(n), O(n^2), O(n^n) )

          tenu charge du code ? ( req/s pour une archi donnée )

          dépendance absolue du code à des services ? ( SQL ? memcached ? MongoDB ? BDB ? FTP ? )

          donc un programme bien ecrit ayant une complexite en O(1) tenant 5 000 req/s sans dépendance externe coutera moins cher en matériel qu'un programme mal écrit ayant une complexité en O(n^3), tenant 20 req/s ayant des dépendances fortes à MySQL.

          donc si tu ne sais pas, tu as la solution du 'GNU-bee' ( prononcer noubie ) qui consiste à chercher à avoir la plus grosse machine sans trop reflechir sur comment s'en servir correctement pensant que cela ne se réduit qu'à cela.
          • [^] # Re: Concurrence ?

            Posté par  . Évalué à 1.

            ou l'inverse, prendre un truc "dans la moyenne" voir comment ca tient et augmenter ou diminuer en fonction du constat

            mais pour ca faut avoir du temps, et un peu d'argent.

            mais deja fouiller un peu dans les stats de ton serveur actuel pour savoir ce qui est visité, sur quelle periode, la durée d'une visite...
          • [^] # Re: Concurrence ?

            Posté par  . Évalué à 4.

            Si serval21 ne donne pas suffisamment d'info, toi tu t'es complètement perdu.

            code mal écrit ? bien écrit ?
            Tu fais comment pour déterminer ça ? Un comité d'experts ? Tu les choisis comment ? En fonction de la réputation des développeurs ?

            complexité intrinsèque du code ? ( O(1) , O(n), O(n^2), O(n^n) )
            Complexité en quoi ? En mémoire ? Tu mesures quoi avec ta complexité ? Les accès mémoire ? L'allocation mémoire ? Le nombre de divisions sur des nombres en virgule flottante ? Toutes les instructions (serveur web et langage compris ?) ? Si c'est le cas tu es au courant que la complexité entre deux instructions peut être très différentes ?

            Tu es au courant aussi que la simple complexité algorithmique est très loin d'être suffisante dans ce genre de cas ? En effet il faut prendre en compte le côté parallélisable ou non des calculs.

            tenu charge du code ? ( req/s pour une archi donnée )
            Déjà il doit manquer un mot, mais en plus c'est vide de sens. Si je prends l'architecture x86, avec un bon vieux celeron et 256Mio de RAM et que je dis qu'il est capable de faire du trois requêtes par seconde alors il me faudra un cluster pour arriver à mes 50 000 utilisateurs ?
            L'architecture a une importance, mais elle n'est pas significative par rapport à la configuration testée. Les Atom et les Core i7 c'est la même architecture, à moins que tu ne parles des "sous-architectures" comme Nehalem, mais là ça commence à être vraiment très spécifique.

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Concurrence ?

              Posté par  . Évalué à 4.

              Je me demande pourquoi je suis moinisé.

              Alors que je ne vois pas du tout comment :
              - juger de la qualité d'écriture d'un code mis à part en se mouillant le doigt et en le levant bien haut.
              - juger de la complexité algorithmique d'un site web (qu'est ce qu'on cherche à quantifié ?)

              Si vous avez une ou des solutions pour le faire ça m'intéresserais de les connaître. Je serais même content si vous me balancé un RTFM ou un GIYF avec les mots clefs adéquate.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Concurrence ?

                Posté par  . Évalué à 4.

                d'abord on dit moinser, moiniser c'est un problème de l'église catholique. ex : "-didons, tu marches bizaremment. - ouais, je viens de me faire moinisé"

                Vous voulez pas la jouer soft ? Je suis pas contraignant... vous voulez la jouer hard ? On va la jouer hard

            • [^] # Re: Concurrence ?

              Posté par  (site web personnel) . Évalué à 2.

              " code mal écrit " => par exemple :
              - avec un MVC, coller du dans du V et du V dans du C,
              - faire de la POO avec 1 seul objet qui fait tout n'importe comment,
              - utiliser la suite 0,1,2,3 en tant que nombre, faire des opérations de comparaison mais ne pas respecter la loi d'ordre qui va avec ( comme dire 0:pas important, 1:important, 2: faiblement important, 3:moyennement en utilisant dans le code des > et des < ) ... c'est un usage contre-intuitif de nombre comparables puisque l'on s'attend à 0<1<2<3 et non 0<1>3<2 ( comprendre 1>3>2>0 )

              et je parle d'exemples concrets écrit par des personnes diplômées et non stagiaires.

              intrinsèque : http://fr.wiktionary.org/wiki/intrins%C3%A8que
              extrinsèque : http://fr.wiktionary.org/wiki/extrins%C3%A8que

              complexité extrinsèque du code : complexité qui n'est pas lié au code que tu écris, que tu maintiens, que tu patches. par exemple, quand tu modifies un fichier php, tu vas ni aller réécrire l'interpreteur php ni apache2 ni le noyau.

              complexité intrinsèque du code :
              complexite théorique du code sans considérer les contraintes inhérentes au matériel, à l'interpréteur.

              cela concerne aussi bien la consommation mémoire que la vitesse d'execution.

              par exemple :
              quand tu fais un "select *" d'une table enorme sans aucun where, et que tu recopies tout en mémoire, "c'est très couteux", et le fait que php ou apache soit optimisé ou non n'a rien à y faire, qu'il y ait 4Mo ou 4Go ou 4To de RAM, cela ne change rien.

              quand je parle de complexité intrinsèque du code, je parle bien de la complexité du code sur le quel tu travailles et non pas de la complexité que tu subis de l'extérieur.

              tu noteras que je ne parlais pas de parallèlisation & co.

              " tenu de charge du code " : exemple ultra basique (et peu significatif) pour la mesurer sur un site wev : /usr/bin/ab

              le but est de savoir si ton code bien qu'il puisse être "théoriquement peu couteux en terme d'execution", est parallélisable ou non.

              exemple pratique idiot :
              tu accèdes en lecture seule à des fichiers sur le disque mais tu as mis un verrou d'accès exclusif à ces fichiers durant toute l'execution de ton programme.
              si ton code est théoriquement rapide, il va faiblement tenir la charge puisqu'à chaque fois, il n'y aura qu'une seule requete qui y aura accès.

              les seules choses pouvant améliorer les performances, sont la performance du hardware ou la réécriture du code.

              exemple pratique tout aussi idiot :
              tu fais à chaque requete un update sans aucun where sur une table ayant beaucoup d'entrées, dans une base MySQL.
              MySQL utilise souvent des verrous exclusif lors d'un update ... donc faible tenue de charge quand tu fais des update couteux.


              pour finir, c'est "perduE" <- tu noteras le e final :p
        • [^] # Re: Concurrence ?

          Posté par  (site web personnel) . Évalué à 2.

          Ça ne nous en dit pas beaucoup plus. Il y a des pages de commentaires ou bien seuls les utilisateurs privilégiés peuvent générer du contenu ? Il y a un système d'authentification pour les utilisateurs normaux ?

          Enfin, l'idée c'est que c'est que tu ne vas pas avoir une réponse complète dans un journal DLFP parce que ça nécessite d'analyser en détails le site et de monter des tests de performance pertinents. Ce qui requiert un minimum d'expertise et de temps.

          pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: Concurrence ?

      Posté par  . Évalué à 0.

      50.000 visites en une journée, en simultané je ne saurai le dire!
      • [^] # Re: Concurrence ?

        Posté par  . Évalué à 10.

        Oblige tes visiteurs à venir chacun leur tour !
        un sheevaplug suffira car tu n'auras que 50000 / 24 / 60 / 60 soit 0.58 visiteur par seconde... :-)
  • # Apache bench

    Posté par  . Évalué à 1.

    Tu devrais tester le programme de ton site avec des outils de mesures.

    Certains peuvent simuler des visites complètes, mais le plus simple est surement apache bench.

    Tu lances apache bench sur une page typique, avec une machine dont tu connais la configuration. Ça va te donner un résultat en nombre de pages par seconde.

    Je dirais qu'il faut que cela puisse desservir au moins 5 fois la quantité maximale de pages par seconde que tu penses devoir fournir. À toi de voir si tu veux plus ou moins de marge. Plus tu prends de la marge, plus c'est confortable.

    Une fois que tu connais le nombre de pages par seconde qu'il faut, et le nombre de pages par seconde sur une configuration donnée, tu peux choisir une configuration plus ou moins puissante par rapport à la configuration testée.

    Mais un bête core2duo sur un site bien codé suffirait à mon avis.

    Envoyé depuis mon lapin.

    • [^] # Re: Apache bench

      Posté par  . Évalué à 2.

      Selenium peut être pas mal pour créer des scénarios et les rejouer.

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Apache bench

        Posté par  . Évalué à 2.

        À moins d'avoir les moyens de lancer 300 navigateurs en même temps, c'est pas vraiment possible.

        L'automatisation est réalisée à partir de javascript exécuté par le navigateur :-)

        Selenium, c'est bien pour faire des tests unitaires, pas pour faire des tests de montée en charge.

        Envoyé depuis mon lapin.

        • [^] # Re: Apache bench

          Posté par  . Évalué à 1.

          Slt à tous,
          merci pour les retours, j'ai testés apache bench, httperf et autobench, je me suis quelque peu perdu dans la réalisation du graphe avec le résultat d'autobench et j'ai finalement retenu apache bench qui donne des résultats tres compréhensifs!!pour info j'ai trouvé que le Dell PowerEdge R510 était une machine assez intéressante!!
          Merci à tous!!
          • [^] # Re: Apache bench

            Posté par  . Évalué à 2.

            Comme dit plus haut, tout dépend du nombre de requêtes en base de données, de la taille des tables, du système de cache etc...
            Peux tu nous en dire plus sur les technologies utilisées pour ton site ? (php/ruby/perl/python/java/mysql/postgres ?)

            Personnellement je conseille nginx au dessus d'apache, qui permet de migrer de serveur très rapidement, mettre en cache les fichiers statiques (png/css/js/etc...), faire du load balancing etc...

            Pour le serveur, je conseille du raid0 de base et d'avoir un second serveur en slave mysql/backup en cas de crash.
            • [^] # Re: Apache bench

              Posté par  . Évalué à 0.

              Slt Nasga,

              Les technologies utilisées sont PHP+mysql et je jette un oeil à nginx!!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.