Hallo Leute,
ich habe ein eigenartiges Problem mit einem Projekt, dass noch auf
Rails 1.1.6 läuft, Ruby 1.8.5, Mongrel 1.1.5 nutzt. Apache dient als
Balancer und ist so konfiguriert, dass er bis zu 8 Mongrelinstanzen
versorgen kann. Der Mongrel Cluster ist auch korrekt konfiguriert, von
8000 bis 8007 lauschen die Jungs tatsächlich.
Starte ich 'ab' um zu testen: ab -n 1000 -c 8 http://www.meinprojekt.de/
und schaue mit top die Prozessliste auf dem Server an, rennen da
erwartungsgemäß 8 Instanzen von mongrel_rails und fackeln die 1000
Requests erstaunlich schnell in 54 Sekunden ab. So weit, so gut.
Jetzt habe ich im Backend des Projekts eine Action eingebaut, die,
wenn sie aufgerufen wird, ein net/http Object instanziert, dieses für
einige Abfragen im Hintergrund nutzt, und erst dann returniert, wenn
alle Requests abgeschlossen und das http Object destroyed wurden. Ein
Aufruf dieser Action kann bis zu 90 Sekunden dauern.
Hier kommt jetzt das Problem ins Spiel. Rufe ich diese Action von
meinem eigenen Host auf, können andere von aussen keine Seiten des
Projektes mehr abrufen. Es wird auch keine weitere Mongrel Instanz
hervorgeholt, solange mein Request läuft. Rufe ich den Indianer
Benchmarker wie oben auf, gibt dieser auch nach einigen
Requestversuchen mit Timeout auf.
Ich habe dafür i.A. keine Erklärung. Vorallem weil die besagte Action
wirklich nichts besonderes tut, HTTP:NET instanzieren, ein paar GET
Requests absetzten, Daten mit RegEx'es parsen und ausspucken.
Hat jemand von Euch eine Erklärung dafür? Vielleicht habe ich auch nur
einen Denkfehler.
Grüße
Jan
jan [ a t ] roesner [d o t] it_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug