2015-11-12 10 views
8

Obserwujemy bardzo powolne czasy reakcji na logowanie w naszej aplikacji Meteor. Jako obciążenie zbliża 200 loginów/minutę rozmowy observeChanges się dość powolne: Login methodDługo obserwuj zmiany połączeń podczas logowania

ObserveChanges large

jak loginWith <serwis> jest częścią Meteor rdzenia, problem ten wydaje się trudne do debugowania. Zwróć uwagę, że widzimy tylko te czasy reakcji powolne, gdy aplikacja osiągnie 100-200 log/min sekundę . Kiedy obciążenie aplikacji jest mniejsze, obserwacja trwa tylko kilka ms. Jakiś pomysł, co może być przyczyną tego?

EDIT: Dodano ślad stosu z powolnym przedmioty rozszerzone: ObserveChanges large

+0

Zawsze uważałem, że reaktywna konfiguracja logowania do logowania była przesadna w przypadku dużej aplikacji produkcyjnej. Jednak nie wiem, jak tego uniknąć, używając –

+1

200 logowań/sek? Łał. –

+0

Czy możesz rozwinąć każdą z nich i opublikować szczegóły w "POKAŻ WIĘCEJ"? Jak wygląda na to ponowne użycie twojego obserwatora? –

Odpowiedz

1

Patrząc na zdjęcie, wygląda jakbyś określił publikację niestandardową dla powracających indywidualne dane użytkownika. Jako krok w rozwiązywaniu problemów, jeśli nie jesteś zainteresowany tego zapytania jest reaktywna, spróbuj wyłączyć reaktywność:

Meteor.publish('currentUser', function() { 
    return Users.find({ 
    _id: this.userId 
    }, { 
    fields: { 
     emails: 1, 
     registered_emails: 1, 
     services: 1, 
     isPremium: 1, 
    }, 
    reactive: false, 
    }); 
}); 

wziąć sprawy dalej (jeśli chcesz zachować rzeczy reaktywny), warto przyjrzeć się wykorzystaniu Meteor 1.3's poll/diff tweaking capabilities , aby sprawdzić, czy to ma znaczenie. Zamiast polegać na oploku dla publikacji użytkownika, spróbuj go wyłączyć dla tego konkretnego zapytania i dostosować opcje pollingIntervalMs i pollingThrottleMs. Tak coś takiego:

Meteor.publish('currentUser', function() { 
    return Users.find({ 
    _id: this.userId 
    }, { 
    fields: { 
     emails: 1, 
     registered_emails: 1, 
     services: 1, 
     isPremium: 1, 
    } 
    }, { 
    disableOplog: true, 
    pollingThrottleMs: 10000, 
    pollingIntervalMs: 10000, 
    }); 
}); 
Powiązane problemy