2013-08-22 20 views
11

Używam framework play 1.2.5, przez ostatnie dwa dni miałem bardzo duży problem z testowaniem obciążenia, który jest dla każdego wywołania API do serwera, który zajmuje średnio 1200-1400ms, ale dzisiaj zmieniłem tylko poniższe: jeden wiersz w pliku application.conf który znacznie zmniejsza średni czas do 20 - 50 ms, linię następująco,co się dzieje po zmianie z trybu DEV na PROD w pliku "application.conf"?

application.mode=prod 
    %prod.application.mode=prod 

początkowo to było jak

application.mode=dev 
    %prod.application.mode=prod 

Więc z tego Mogłem zrozumieć Tha t przejście z dev do produkcji sprawia, że ​​coś i co znalazłem w Internecie jest, dev tryb play.pool = 1 domyślnie podczas gdy w trybie produkcji play.pool = no procesorów + 1, mój komputer ubuntu jest 4 procesor, więc używa 5 wątków. Teraz przychodzę do problemu, jeśli to, co znalazłem, jest prawdą, to kiedy zmieniam play.pool = 5 ręcznie w application.conf nie daje mi szybszego wyniku ani jeśli ustawię play.pool = 1 i uruchomię produkcję Tryb ten nie spowalnia również moich wyników loadtest aplikacji, więc muszę wiedzieć, co się stanie, gdy zmienię z dev na tryb prod, poza tym play.pool, który sprawia, że ​​moja aplikacja jest szybsza. ponieważ jestem w obliczu problemu W UAT, gdzie nie ma dobrych wyników dla zmiany w trybie prod również działa tylko w moim localhost.please znaleźć mi rozwiązanie wcześniej dzięki dzięki Advance.

UPDATE:

Tak wiem, wszystkie te spożywczych jak w trybie DEV się ładuje aplikacji i kompiluje, ale chyba jej nie dla każdego i każde żądanie tylko w początkowym załadunku programu myślę, ale mój problem jest ten tryb prod działa dobrze na moim localhost i mój lokalny serwer, kiedy idę na UAT, otrzymuję złe wyniki w teście obciążenia około 800ms jako średnią. aplikacja jest powolna nawet w prod nawet podczas wykonywania loadtest lokalnie (jmeter jest zainstalowany w maszynie serwerowej i testuję go przy użyciu Remote Desktop Connection). Tak więc, poza kompilacją i ponownym ładowaniem, muszę wiedzieć, jakie są wszystkie zmiany dokonane w pliku application.conf, gdy zmienię z DEV na tryb PROD, tak jak zmiana play.pool z wątku na 1 (bez procesorów + 1). FYI: mój system localhost to 4 procesor, a lokalny serwer to 4 procesor, ale maszyna UAT to 2 procesory, jeśli to jest problem, próbowałem nawet zmienić wątki puli na 10 (play.pool = 10) i brak dobrych wyników w UAT.

Odpowiedz

3

Oprócz pojedynczego wątku, w trybie dev uruchomienie aplikacji jest opóźnione do momentu wysłania pierwszego żądania. W trybie prod aplikacja zostanie uruchomiona natychmiast. To oczywiście wpływa na czas ładowania pierwszego żądania.

Domyślam się, że "zła" wydajność w trybie dev jest najczęściej spowodowana przez funkcję przeładowywania i kompilowania klas podczas pracy. Na każde żądanie klasy są sprawdzane pod kątem zmian i mogą być ponownie ładowane. Myślę, że ta funkcja jest bardzo warta wydłużenia czasu ładowania i nie wiem, czy można ją dezaktywować.

Prawdopodobnie nie powinieneś uruchamiać żadnych testów wydajności/akceptacji w trybie deweloperskim. Here's a short a discussion about it. Zamiast próbować zwiększyć wydajność trybu dev, powinieneś po prostu użyć trybu prod.

+0

Tak, wiem wszystko, co przeładowuje i kompiluje w trybie deweloperskim, ale mój problem polega na tym, że przejście z trybu DEV na PROD działa dobrze w moim lokalnym hoście i lokalnym serwerze, ale ten pomysł nie jest dobry w UAT (Testowanie strony w Ameryce). Zobacz moją AKTUALIZACJĘ w pytaniu –

2

Powinieneś zrobić trochę więcej analiz, zanim przejdziesz do swoich pistoletów.
Po pierwsze starasz się zrozumieć, gdzie spędza się dodatkowy czas.

  • Renderowanie szablonów?
  • Wiszące oczekiwania na połączenia DB?
  • Czy są jakieś blokady wątków?
  • Czy baza danych została zoptymalizowana za pomocą indeksów?
  • Czy zmierzyłeś użycie procesora i pamięci?
  • Czy wykonujesz jakieś kosztowne operacje we-wy?
  • Czy na tym komputerze działają inne procesy?
0

Jak rozpocząć grę na serwerze produkcyjnym?

Mam nadzieję, że czytać: http://www.playframework.com/documentation/1.2.5/production

Twoje pytanie jest naprawdę o problemie wydajności. Może występować wiele czynników powodujących różnice w wydajności w stosunku do lokalnego środowiska i produkcji. Oprócz Play, DB działa na tym samym polu?

+0

Tak, DB działa na tym samym komputerze. –