vinduer - intermitterende langsomme skinner app

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Rails-app på en Windows-maskine med en SQL Server-database, og det meste af tiden (men ikke altid) kører det smerteligt langsomt. Mærkeligt er det kun sket siden jeg migreret appen til en nyere maskine - da appen løb på en ældre maskine, fungerede det fint. Jeg er ikke bekendt med at behandle servery stuff, så hvad skal jeg se på for at finde ud af problemet?


Jeg forsøgte at se på logfilerne, men de virker forkerte. For eksempel, jeg kører appen i produktionstilstand, så kigger på production.log, ser jeg følgende til min sidste anmodning:


   Started GET "/experiments" for 197.57.189.98 at 2011-04-07 12:14:40 -0700
      Processing by ExperimentsController#index as HTML
    Rendered experiments/\_experiment\_table.html.erb (5.0ms)
    Rendered experiments/\_experiment\_table.html.erb (13.0ms)
    Rendered experiments/\_experiment\_table.html.erb (3.0ms)
    Rendered experiments/\_experiment\_table.html.erb (2.0ms)
    Rendered experiments/\_experiment\_table.html.erb (2.0ms)
    Rendered layouts/\_header.html.haml (1.0ms)
    Rendered experiments/index.html.erb within layouts/application (5410.5ms)
    Completed 200 OK in 5671ms (Views: 500.1ms | ActiveRecord: 5162.5ms)


Men det tog faktisk 40 sekunder fra det tidspunkt, hvor jeg navigerede til '/eksperimenter' til den tid siden blev færdig med at indlæse. (Jeg er ikke sikker på, om loggen er inklusiv databaseadgangstid, selvom?)

Bedste reference


Dette er sket med mig. Sandsynligvis er det mest kritiske stykke information, der mangler her, hvilken webserver du bruger. Rails loggen viser dig hvor meget tid der bruges til at behandle en forespørgsel, men viser ikke hvor meget tid det tog webserveren at sende anmodningen til rails stacken.


Der er nogle tilfælde, hvor en fejlagtigt konfigureret webserver kan medføre en lang timeoutforsinkelse til en forespørgsel, for eksempel at lave et omvendt DNS-opslag, der altid fejler.


Du kan teste dette ved at prøve et par webservere. I mit tilfælde tog Webrick 40 sekunder til en sidebelastning, mens Passager på Apache og Thin ikke havde nogen problemer. Jeg anbefaler at prøve en alternativ webserver (let at teste fra kommandolinjen med tynde og webrick især) for at se om problemet går væk.


Derefter kan du fejle din webserver opsætning.