On Apr 2, 1:18 pm, Frioffol Friofool <[EMAIL PROTECTED]>
wrote:
> oui je comprends l'utilité de faire une maquette pour reproduire des
> scenarios propres à mon environnement.
> Dans le cas présent je ne sais pas comment je peux tester l'envoi
> d'e-mail en masse dans la mesure ou le test va s'arrêter juste avant la
> procédure d'envoi et donc l'appel smtp.
>
> j'aimerai savoir si le bloquage du serveur vient du fait que je n'ai
> qu'un process mongrel pour mon appli ou si c'est sendmail qui surcharge
> le serveur.
>
Tu n'as pas compris comment fonctionnait Ruby on Rails ou ActionMailer
A ton avis comment j'ai deviné que tu ne tournais que sur un seul
process ?
Ruby On rails n'est pas thread safe et donc par nature mono thread, ce
qui signifie que tu ne peux traiter qu'une seule requete en simultané.
Si ton expédition de mail prend du temps, les autres personnes qui
arriveront sur ton site devront attendre que ce soit fini pour que ton
process traite leur demande.
La question n'est pas de savoir si ton smtp est lent ou pas, ou s'il
bloque je ne sais pas quoi ou pas, même s'il est rapide, géré 5000
mails prend du temps et un jour ca sera 10 000.
ActionMailer traite l'expédition de mail de facon synchrone (et ne
gère pas le traitement en batch), donc si tu l'utilises dans un
controlleur tu vas devoir attendre que tes 5000 mails aient été
accepté par ton smtp, ou sendmail ou whatever. Ca va donc forcement
bloqué ton process, 1 s ou 20000s, là n'est pas la question.
Donc ton appli est bloqué car ton process est occupé avec cet envoie
de mail, point barre.
Tu peux le gérer de plein de facon:
- middleware pour gérer ca en tache de fond
- plusieurs process mongrel (faut être fou pour ne tourner que sur un
seul de toute facon)
- reprogrammer ActionMailer pour que la communication avec le smtp
soit asynchrone au lieu d'être synchrone
- lancer l'expedition de mail dans un nouveau thread
- n'importe quelle action qui fait que ton action de controller ne
prenne pas 2 minutes
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---