IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Probleme multitache sur ruby on rails


Sujet :

Ruby

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Probleme multitache sur ruby on rails
    Bonjour à tous

    Tout d'abord voici la config :
    Serveur linux : ubuntu 8.4
    Rails : 2.3.4
    Ruby : 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]

    Le but premier était de tester la charge d'un serveur. En réalisant quelque test j'ai l'impression, je dit bien "l'impression" que Ror est monotache. Ce qui n'est pas concevable.
    Il a bien un problème quelque part et c'est pour cela que je fais appel à vous.


    Fichier de conf coté serveur
    config/environments/development.rb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ---
    config.threadsafe!
    ---
    voici le script coté serveur :
    app/controllers/hello_controller.rb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class HelloController < ApplicationController
     
            def word
                    $startTime = Time.now
                    for valeur in 1..10000000
                    end
                    $stopTime = (Time.now - $startTime)
                    render :text => "Hello Word!!!!, id: "+params["id"]+", temps: "+$stopTime.to_s
            end
    end
    et script de "test de charge" :
    helloWord.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/bash
    count=0
    while [ $count -lt $1 ]
    do
            php helloWord.php $count &
            count=`expr $count + 1`
    done
    et script client
    helloWord.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $url = "http://".URL_AMV."/hello/word?id=".$id;
    $timeStart = microtime(TRUE);
    echo "debut de ".$id." à ".$timeStart."\n";
    $retour = file($url);
    $timeStop = microtime(TRUE);
    echo "fin de ".$id." à ".$timeStop."\n";
    echo "Total pour ".$id." => ".$totalTime."\n";
    echo $url."\n";
    print_r($retour);
    et voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ./helloWord.sh 5
    
    debut de 0 à 1285767141.33
    
    debut de 1 à 1285767141.332
    
    debut de 2 à 1285767141.37
    
    debut de 3 à 1285767141.3795
    
    debut de 4 à 1285767141.406
    fin de 0 à 1285767142.2877
    Total pour 0 => 0.958
    http://87.98.167.204:4445/hello/word?id=0
    Array
    (
        [0] => Hello Word!!!!, id: 0, temps: 0.760337
    )
    fin de 1 à 1285767143.1712
    Total pour 1 => 1.839
    http://87.98.167.204:4445/hello/word?id=1
    Array
    (
        [0] => Hello Word!!!!, id: 1, temps: 0.760326
    )
    fin de 2 à 1285767143.9855
    Total pour 2 => 2.616
    http://87.98.167.204:4445/hello/word?id=2
    Array
    (
        [0] => Hello Word!!!!, id: 2, temps: 0.760426
    )
    fin de 3 à 1285767144.8673
    Total pour 3 => 3.488
    http://87.98.167.204:4445/hello/word?id=3
    Array
    (
        [0] => Hello Word!!!!, id: 3, temps: 0.760231
    )
    fin de 4 à 1285767145.6874
    Total pour 4 => 4.281
    http://87.98.167.204:4445/hello/word?id=4
    Array
    (
        [0] => Hello Word!!!!, id: 4, temps: 0.764974
    )
    Coté log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Processing HelloController#word (for 80.13.147.95 at 2010-09-29 15:31:53) [GET]
      Parameters: {"id"=>"0"}
    Completed in 763ms (View: 0, DB: 1) | 200 OK [http://87.98.167.204/hello/word?id=0]
      SQL (0.2ms)   SET client_min_messages TO 'panic'
      SQL (0.1ms)   SET client_min_messages TO 'notice'
     
     
     
    Processing HelloController#word (for 80.13.147.95 at 2010-09-29 15:31:54) [GET]
      Parameters: {"id"=>"1"}
    Completed in 763ms (View: 0, DB: 1) | 200 OK [http://87.98.167.204/hello/word?id=1]
      SQL (0.2ms)   SET client_min_messages TO 'panic'
      SQL (0.1ms)   SET client_min_messages TO 'notice'
     
     
     
    Processing HelloController#word (for 80.13.147.95 at 2010-09-29 15:31:55) [GET]
      Parameters: {"id"=>"2"}
    Completed in 763ms (View: 0, DB: 1) | 200 OK [http://87.98.167.204/hello/word?id=2]
      SQL (0.2ms)   SET client_min_messages TO 'panic'
      SQL (0.1ms)   SET client_min_messages TO 'notice'
     
     
    Processing HelloController#word (for 80.13.147.95 at 2010-09-29 15:31:56) [GET]
      Parameters: {"id"=>"3"}
    Completed in 763ms (View: 0, DB: 1) | 200 OK [http://87.98.167.204/hello/word?id=3]
      SQL (0.2ms)   SET client_min_messages TO 'panic'
      SQL (0.1ms)   SET client_min_messages TO 'notice'
     
     
     
    Processing HelloController#word (for 80.13.147.95 at 2010-09-29 15:31:57) [GET]
      Parameters: {"id"=>"4"}
    Completed in 767ms (View: 0, DB: 1) | 200 OK [http://87.98.167.204/hello/word?id=4]
    Que constatons nous ?
    1. Nous remarquons que 5 processus sont bien lancés en même temps.
    2. Que ruby met quasi toujours le même temps pour traiter la demande (760ms).
    3. ET : Que Ror attend la fin d'un traitement avant de traiter le suivant. Dans cette hypothèse, si j'utilise l'architecture Ror pour faire un site web, et 5 internautes se connectent à ce site, il vont devoir que attendre chacun leur tour pour que leur page s'affiche...


    Sur ce :
    Je suis sûr qu'il y a un problème dans mon raisonnement ou dans la configuration de mon serveur. Est il possible que quelqu'un vienne m'aider à ce sujet?

    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Let's go to english
    Pour ceux que le sujet intéresse.
    see here

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/01/2011, 15h51
  2. Réponses: 34
    Dernier message: 29/12/2010, 20h35
  3. question sur ruby on rails
    Par zyriuse dans le forum Ruby
    Réponses: 5
    Dernier message: 28/05/2009, 10h21
  4. [Debutant] Informations sur ruby on rails
    Par bj304075 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 17/06/2008, 14h51
  5. Réponses: 2
    Dernier message: 06/06/2006, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo