Witam!
Mam sporą różnicę w działaniu aplikacji między dwoma serwerami i chcę dojść gdzie jest pies pogrzebany
Polecicie jakiś plugin lub inne rozwiązanie do odnalezienia źródła tego problemu …?
Witam!
Mam sporą różnicę w działaniu aplikacji między dwoma serwerami i chcę dojść gdzie jest pies pogrzebany
Polecicie jakiś plugin lub inne rozwiązanie do odnalezienia źródła tego problemu …?
Przede wszystkim sprawdź czy aplikacje mają tą samą konfigurację (przede wszystkim tryb “production”, być może na jednym masz “development”). Podobnie może być z bazą, być może na jednym serwerze ktoś optymalizować “z palca” (indeksy) i tak już zostało. Kolejna sprawa to instalacja interpretera rubiego. Instalowałeś na obu z tego samego źródła? Takie same systemy masz na serwerach? Przykładowo instalując ruby z paczki pod ubuntu mamy około 2-3x wolniejszy interpreter niż robiąc to ze źródeł (sprawdzone!). Napisz jakieś proste benchmarki w rubym, sprawdź jaka jest różnica między tymi maszynami.
Dobra, co do railsów. To może być trudne do znalezienia jeśli to w nich jest coś nie tak.
Przede wszystkim użyj narzędzi “ab”, lub “httperf”. Nie służą one do profilowania, ale pokazują wydajność (req/s) aplikacji. Może dobrze by było sprawdzić, na najprostszej aplikacji (2 modele, 1 controller etc) czy różnica też występuje. Jeśli nie byłoby takiej różnicy o jakiej mówisz to prawdopodobnie problem tkwi w Twojej aplikacji. Sprawdź też jak się aplikacja zachowuje bez bazy i bez sesji.
Jeśli w tym momencie problem istnieje to zostaje Ci profilowanie aplikacji: http://cfis.savagexi.com/articles/2007/07/10/how-to-profile-your-rails-application.
Powodzenia.
Stawiam jednak że to kwestia różnic konfiguracyjnych/softwareowych.
Sprawdź jakiego gema używasz do połączenia z bazą MySQL. Kompilowany (natywny) jest o wiele szybszy od tego napisanego w rubym.
Ja bym zaczal od obejzenia obciazenia systemu: vmstat, iostat, top i konfiguracji tych maszyn. Mozesz dospecyfikowac “różnicę w działaniu aplikacji między dwoma serwerami” ?