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

Antwort per Email an