optimisation : table de type memory pour les sessions  Début

Aller à la page: 1 - 2 - 3 [+1]

  • Les tables de type Mémory sont des tables qui sont stockés en mémoire vive, elles ont donc des temps d'accés trés rapide.

    Ces types de tables sont supporté par MySQL 5 (et 4 il me semble)

    Comme çà serait trop beau s'il n'y avait pas de problémes à les utiliser :
    - toute données de la table est perdu en cas de plantage ou redémarrage du serveur (ce qui est pas trop grave pour les sessions)
    - pas de support des types "blob"
    - support adodb à voir ?

    Comme il y a beaucoup d'accès à la table session çà pourrait être une idée

    http://dev.mysql.com/doc/refman/5.0/fr/memory-storage-engine.html



    Membre du PSR Project (Pagesetter replacement)
  • un test de comparaison pourraît être fait mais, faudrait ensuite pouvoir dire que c'est vraiment + rapide et avoir les outils pour !

    Je vais tenter de voir celà !



    Gilles  ><>°
  • d'après les experts MySQL du travail, ca peut faire gagner pas mal de vitesse, mais faut aussi un certain nombre d'utilisateurs.

    L'idée, c'est que si y'a la place en mémoire, il met la table en mémoire, s'il ne peut pas, il la traite de la même manière que les autres et alors, il n'y a pas d'avantage, ni même d'inconvénients.




    Gilles  ><>°
  • et ils t'ont données des sources ou des tests de performances pour avoir un ordre d'idée des retours sur l'intégration d'une telle caractéristique dans un gros portail.



    Membre du PSR Project (Pagesetter replacement)
  • C'est vrai que c'est une excellente idée !
  • Quote

    et ils t'ont données des sources ou des tests de performances pour avoir un ordre d'idée des retours sur l'intégration d'une telle caractéristique dans un gros portail.


    Non dans ma boîte, on utilise MySQL dans le backend pas dans le frontend. C'est une très très grosse architecture incomparable à un site postnuke.

    Ils ne connaissaient que de nom, pas en utilisation.

    Par contre, je viens de terminer mes tests. J'ai pris pour celà le temps d'execution SQL (variable disponible par le fichier config/config.php), hacké un poil un site pn pour qu'il m'enregistre ces données dans un fichier et lancé 100x un wget sur la page d'accueil. une fois en MYISAM et une fois en MEMORY. J'ai donc 200 sessions différentes qui ont été crées et non qui ont été updatées...

    J'ai ensuite mis tout celà dans un tableau, processé le tout pour en arriver à la conclusion qu'il y a une amélioration de 2.5 milliemes... C'est pas énorme... mais sur 11 miliemes de temps de requete, ca fait déjà ca !

    Des idées pour améliorer le test??



    Gilles  ><>°
  • oui, en faites sur Apache Web Server il y a une commande fourni par défaut pour faire des test, çà s'appelle Apache Web Server Benchmark

    et tu peux lancer un grand nombre de requêtes (10000 par exemple) et avoir des résultats très fiables.

    je l'ai utilisé pour faire des tests pour voir les différences de performance entre un Apache Web Server mod proxy + lighttpd et un Apache Web Server tout court

    Voila le type de sorti qu'il te donne
    http://forum.to…nce-t4107.html

    voila le man
    http://httpd.apache.org/docs/2.0/programs/ab.html

    il est fourni par défaut avec Apache Web Server
    pour l'utiliser


    syntaxe

    Quote

    ab -n 10000 -c 5 http://localhost/pn/index.php


    -n te donne le nombre de requêtes que tu veux lancer
    -c te donne le nombre de requêtes concurrentes

    pense à nous poster le résultat ici^^
    l'option -e fichier.csv permet d'enregistrer en un format compatible exec, utile pour faire des graphes, des fois que tu veuilles en faire une news :)

    NOTES: ab existe aussi sous windows voir répertoire apache2/bin de wamp si vous l'utilisez.










    modifié par : mumuri, 08 Mar 2008 - 15:48



    Membre du PSR Project (Pagesetter replacement)
  • Alors pour MYISAM:

    Quote


    MIYSAM
    [gpilloud@ABOUTPURE-LX] [~/Projets/test2] [15:46:40] [Linux]
    >> ab -n 10000 -c 5 http://localhost/test2/index.php
    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Copyright 2006 The Apache Web Server Software Foundation, http://www.apache.org/

    Benchmarking localhost (be patient)
    Completed 1000 requests
    Completed 2000 requests
    Completed 3000 requests
    Completed 4000 requests
    Completed 5000 requests
    Completed 6000 requests
    Completed 7000 requests
    Completed 8000 requests
    Completed 9000 requests
    Finished 10000 requests


    Server Software: Apache/2.2.4
    Server Hostname: localhost
    Server Port: 80

    Document Path: /test2/index.php
    Document Length: 7967 bytes

    Concurrency Level: 5
    Time taken for tests: 4641.275027 seconds
    Complete requests: 10000
    Failed requests: 9996
    (Connect: 0, Length: 9996, Exceptions: 0)
    Write errors: 0
    Total transferred: 85227925 bytes
    HTML transferred: 79657925 bytes
    Requests per second: 2.15 [#/sec] (mean)
    Time per request: 2320.637 [ms] (mean)
    Time per request: 464.127 [ms] (mean, across all concurrent requests)
    Transfer rate: 17.93 [Kbytes/sec] received

    Connection Times (ms)
    min mean[sd] median max
    Connect: 0 0 0.0 0 0
    Processing: 405 2319 3475.7 2155 103007
    Waiting: 405 2317 3467.8 2154 103007
    Total: 405 2319 3475.7 2155 103007

    Percentage of the requests served within a certain time (ms)
    50% 2155
    66% 2359
    75% 2484
    80% 2561
    90% 2786
    95% 2984
    98% 3247
    99% 3623
    100% 103007 (longest request)




    Pour MEMORY

    Quote


    MEMORY
    [gpilloud@ABOUTPURE-LX] [~/Projets/test2] [17:33:09] [Linux]
    >> ab -n 10000 -c 5 http://localhost/test2/index.php
    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Copyright 2006 The Apache Web Server Software Foundation, http://www.apache.org/

    Benchmarking localhost (be patient)
    Completed 1000 requests
    Completed 2000 requests
    Completed 3000 requests
    Completed 4000 requests
    Completed 5000 requests
    Completed 6000 requests
    Completed 7000 requests
    Completed 8000 requests
    Completed 9000 requests
    Finished 10000 requests


    Server Software: Apache/2.2.4
    Server Hostname: localhost
    Server Port: 80

    Document Path: /test2/index.php
    Document Length: 7967 bytes

    Concurrency Level: 5
    Time taken for tests: 4496.712792 seconds
    Complete requests: 10000
    Failed requests: 9999
    (Connect: 0, Length: 9999, Exceptions: 0)
    Write errors: 0
    Total transferred: 85227933 bytes
    HTML transferred: 79657933 bytes
    Requests per second: 2.22 [#/sec] (mean)
    Time per request: 2248.356 [ms] (mean)
    Time per request: 449.671 [ms] (mean, across all concurrent requests)
    Transfer rate: 18.51 [Kbytes/sec] received

    Connection Times (ms)
    min mean[sd] median max
    Connect: 0 1 34.7 0 1900
    Processing: 446 2246 799.1 2243 53200
    Waiting: 0 2243 800.9 2242 53200
    Total: 446 2247 799.2 2243 53200

    Percentage of the requests served within a certain time (ms)
    50% 2243
    66% 2406
    75% 2515
    80% 2586
    90% 2777
    95% 2944
    98% 3162
    99% 3328
    100% 53200 (longest request)




    Au niveau de l'interprépation, ca n'est pas encore fait, mais mes premieres impressions donnes MEMORY gagnant !



    Gilles  ><>°
  • gain de 3% pas mal
    http://www.google.fr/search?hl=fr&client=firefox-a&rls=org.mozilla%3Afr%3Aofficial&hs=mx4&q=%284641-4496%29*100%2F4641&btnG=Rechercher&meta=

    tu avais testé juste un appel à la session ou le chargement d'une page complète ?



    Membre du PSR Project (Pagesetter replacement)
  • Quote

    tu avais testé juste un appel à la session ou le chargement d'une page complète ?


    J'ai effectué l'appel à la page d'accueil. J'ai donc autant de sessions que de bench faits... 20000 heureusement, elles ont expirées pour certaines !



    Gilles  ><>°
  • ok donc c'est pas négligeable



    Membre du PSR Project (Pagesetter replacement)
  • J'ai vu que tu avais déjà soumis cette évolution et que tu avais eu une réponse négative car cette évolution n'est possible que sous MySQL et non sous postgresql...

    Je pense donc, quand j'ai le temps, créer et publier un petit hack pour MySQL permettant d'avoir cette petite évolution, bien que je pense que pour de nombreux site, l'évolution ne se voie pas !

    ++



    Gilles  ><>°

Aller à la page: 1 - 2 - 3 [+1]

  • 6 visiteurs

Données pour les 20 dernières minutes