Performances


#1

Bonjour,

jusqu’à présent je n’utilisais pour coder que le serveur Webrick c’était
beaucoup plus simple. Un http_load me donnait des résultats corrects et
la navigation était fluide. Cependant le fait qu’une application tourne
sur un port différent à chaque fois ne me plaît pas trop.

devel:/home/leo/http_load-29jun2005# ./http_load -v -parallel 2 -seconds
10 url
36 fetches, 2 max parallel, 243936 bytes, in 10 seconds
6776 mean bytes/connection
3.6 fetches/sec, 24393.6 bytes/sec
msecs/connect: 0.278556 mean, 0.328 max, 0.102 min
msecs/first-response: 517.684 mean, 660.096 max, 397.473 min
HTTP response codes:
code 200 – 36

devel:/home/leo/http_load-29jun2005# ./http_load -v -parallel 20
-seconds 10 url
34 fetches, 20 max parallel, 230384 bytes, in 10.0003 seconds
6776 mean bytes/connection
3.3999 fetches/sec, 23037.8 bytes/sec
msecs/connect: 1058.88 mean, 2999.97 max, 0.193 min
msecs/first-response: 3040.46 mean, 6162.07 max, 566.06 min
HTTP response codes:
code 200 – 34
devel:/home/leo/http_load-29jun2005#

Aujourd’hui mon application est presque fini, j’ai donc entrepris de
faire les choses correctement pour la production. J’ai installé apache
1.3 et fastcgi en suivant les recommandations de tunning trouvés Ã
gauche et à droite sur le net :

http://scottstuff.net/blog/articles/2005/07/20/apache-tuning-for-rails-and-fastcgi

mais le résultat est catastrophique la navigation est tout sauf fluide
et la charge de la machine explose j’ai donc cherché ailleur et j’ai
trouvé ça :

http://paul.querna.org/journal/articles/2006/01/01/using-mod_fcgid-for-ruby-on-rails-applications

c’est un peu mieux mais Webrick reste tout de même beaucoup mieux.

Je pense sincèrement être passé à coté de quelque chose mais je ne vois
pas trop quoi. Merci de votre aide.

A noté que l’application est vraiment très simple :

1 contrôleur, 1 base, 1 table, un peu de javascript 50lignes de code Ã
tout casser.

Machine :

Linux 2.6.8 Debian Sarge à jour
Pentium III 1,3Ghz
512 Mo Ram
2 x 18go RAID 1 SCSI


Cordialement

Olivier AUDRY
Unix System Engineer
COLT TELECOM FRANCE


#2

Salut,

faire les choses correctement pour la production. J’ai installé apache
1.3 et fastcgi en suivant les recommandations de tunning trouvés à
gauche et à droite sur le net :
et la charge de la machine explose j’ai donc cherché ailleur et j’ai
trouvé ça :

Je connais pas fcgid. Mais dans les deux cas, une piste pourrait être
que tu n’es pas en environnement de ‘production’.


#3

1 contrôleur, 1 base, 1 table, un peu de javascript 50lignes de code Ã
tout casser.

Machine :

Linux 2.6.8 Debian Sarge à jour
Pentium III 1,3Ghz
512 Mo Ram
2 x 18go RAID 1 SCSI

Avec une telle machine, apache et fastcgi, il étonnant de voir des
performances aussi médiocre.

Soit ta configuration d’apache est mauvaise et donc tu as du seulement
du cgi (ce qui explique la lenteur )
vérifie si tu as cette ligne dans ta conf d’apache :

AddHandler fastcgi-script .fcgi

Soit ton module apache n’est pas chargé.


#4

vérifié aussi si la webapp rails est configuré en fgci dans le htaccess.

Le 07/02/06, Pierre F. removed_email_address@domain.invalid a
écrit :


#5

Bonjour,

J’aimerais afficher le contenu d’un répertoire avec la commande :

Dir.foreach(“testdir”) {|x| puts("Got " + x) }

Dans une vue je place donc le code :

<%= Dir.foreach(“testdir”) {|x| puts("Got " + x) } %>

Et j’ai une Application error :

Rails application failed to start properly

Pourtant je n’ai pas d’erreur dans les log.

Ai je commis une erreur ?


#6

salut
essaye le module scgi avec apache.
tu trouvera ici peux etre de l’aide :
http://www.zedshaw.com/projects/scgi_rails/
http://wiki.rubyonrails.com/rails/pages/SCGI+Rails+Runner+with+Apache+2+on+Linux


#7

Salut,

<%= Dir.foreach(“testdir”) {|x| puts("Got " + x) } %>

Les templates erb <%= ne fonctionnent que si l’expression retourne une
valeur simple.

Sans aller dire que c’est une limitation souhaitable, les templates sont
là pour gérer la couche d’affichage.
Tu peux y faire des boucles, des manipulations des chaines de caractère
(majuscules, troncature), des conditions …

Tu ne devrais jamais avoir à aller chercher une donnée directement sur le
disque, ou dans ta base de données. Tu ne devrais jamais non plus avori à
calculer une donner ou faire un traitement.

Ce qui est fondamentalement faux ce n’est pas tant que tes variables
retournent des types complexes, c’est que tu fais des traitements et des
accès donnée dans tes templates.

Ton truc devrait être soit dans l’action (si les données sont dépendantes
de l’action), soit dans un helper, soit dans un de tes objets métiers.
Dans aucun cas directement dans le template.


Eric D.


#8

Salut,

<%= Dir.foreach(“testdir”) {|x| puts("Got " + x) } %>

Les templates erb <%= ne fonctionnent que si l’expression retourne une
valeur simple.

Tu faire comme ça :

<% @mydir=Array::new %>
<% Dir.foreach(“c:/”) {|x| @mydir << x } %>

<% for myfile in @mydir %>
<%= myfile %>

<% end%>

Mais c’est du code de goret, il est conseillé de mettre le code qui
nourrit @mydir dans un helper.


#9

Bonjour,

je me répond à moi même :

dans la debian le module Fastcgi est en fait un module fcgid donc le
AddHandler est différent :

remplacer :

AddHandler Fastcgi-script .fcgi

par

AddHandler fcgid-script .fcgi

et la ça va beaucoup mieux.

Merci pour os conseils.


Cordialement

Olivier AUDRY
Unix System Engineer
COLT TELECOM FRANCE


#10

Quoting Pierre F. removed_email_address@domain.invalid:

Bonjour,

Bonjour

Dans une vue je place donc le code :

<%= Dir.foreach(“testdir”) {|x| puts("Got " + x) } %>

Ca ne sortira pas IMHO : <%= … %> ne redirige pas il me semble la
sortie
standard vers le fichier cree. Essaie avec qq chose dans le genre:

<%= Dir[“testdir/*”].map { |x| “Got " + x }.join(”\n") %>

ou <%= Dir[“testdir/*”].inject(""){|sum,d| sum += "Got " + d + “\n” } %>

Frederick R. aka Sleeper – removed_email_address@domain.invalid