2010-11-11 12 views
6

Mam małą aplikację internetową skonfigurowaną z Guice, Jersey i EclipseLink i uruchamiam tę aplikację na pomoście (8.0.0.M1) podczas programowania. Istnieje około 10 (małych) klas zarządzanych JPA (encje i pliki do osadzenia) i łącznie około 20 klas.Przyspieszanie uruchamiania aplikacji na Jetty

Pierwsze uruchomienie trwa 15 sekund + 5 sekund dla pierwszych żądań. Wygląda na to, że JPA pracuje nad pierwszym żądaniem, ponieważ mam włączoną strategię generowania tabeli "create" i zobacz niektóre wyniki WZP z Maven na pierwsze żądanie.

Przeładowanie trwa około 10 sekund, a pierwsze żądanie po ponownym załadowaniu trwa od 3 do 4 sekund.

Może się wydawać, że czas uruchamiania nie jest taki zły, ale zastanawiam się, czy mogę przyspieszyć uruchomienie, aby pracować płynniej jak z Django. Masz pomysł na tuning startowy?

+0

Czy problem dotyczy czasu rozruchu jako takiego, czy też pierwszy użytkownik musi ponieść koszty uruchomienia? Jeśli jest to drugie, możesz poprosić aplikację o wysłanie prośby do siebie po uruchomieniu, aby ją rozgrzać. Wtedy pierwszy użytkownik widzi normalny czas reakcji. –

+0

Moją obawą jest czas uruchamiania podczas programowania. Ponowne uruchomienie jest stosunkowo rzadkie w produkcji, więc zaakceptowałbym, że pierwszy użytkownik musi odczekać kilka sekund. – deamon

+1

Po ponownym uruchomieniu ze względu na zmiany w kodzie (nie zmiany schematu), staraj się unikać restartów (prawie) całkowicie za pomocą JRebel (http://www.zeroturnaround.com/jrebel/). To nie jest darmowe, ale oszczędza dużo czasu (nie jestem z nimi związany). – DaGGeRRz

Odpowiedz

2

Obawiam się, że jeśli nie jesteś gotowy na usunięcie strategii tworzenia tabeli, będziesz musiał tolerować takie czasy ładowania. Zasadniczo, za każdym razem, gdy uruchamiasz swoją aplikację, usunie/utworzy/zweryfikuje tabele i wyda poprawne instrukcje DDL, aby dopasować je do jednostek w twoim pakiecie.

Zakładając, że skończyłeś definiować swoje jednostki i pracujesz nad jakimś logiem biznes-logicznym, możesz raz utworzyć bazę danych i ponownie użyć początkowej konfiguracji.

0

Wyobrażam sobie, że korzystasz z Jetty do szybkiego tworzenia aplikacji (RAD) i chcesz zobaczyć i przetestować wszelkie zmiany tak szybko, jak to możliwe. Jeśli nie ma faktycznego "trwałego" wymogu w bazie danych środowiska RAD, można spróbować przenieść się do silnika bazy danych IM-memory. Silnik DB, podobnie jak HSQL, pozwala na szybkie przekształcenie nowych stołów (i innych struktur) w porównaniu do rzeczywistych silników o jakości produkcji. Wymagałoby to użycia ORM, ponieważ SQL SQL HSQL jest bardzo różny od większości innych baz danych, ale wydaje się, że już używasz JPA, więc nie powinno to być trudne.

Jedyną alternatywą jaką widzę jest użycie bazy danych, która ma już poprawnie utworzony schemat i nie upuszczenie go za każdym razem.

+0

Używam już DB w pamięci (Derby). – deamon

Powiązane problemy