/ / Asp.net Wydajność e-commerce - asp.net, e-commerce

Wydajność e-commerce Asp.net - asp.net, e-commerce

Zajmuję się projektowaniem e-commerce na Asp.Net 3.5 z C #. Używam struktury 3-poziomowej (Data + Business + UI) do uzyskania danych z bazy danych (Msql 2005).

Są przechowywane procedury i wszystko, co się z nich dzieje. (Metody CRUD)

Występuje tu problem z wydajnością, projekt działa tak wolno. Nie mogłem znaleźć żadnego problemu w modelu transakcji.

Również projekt działa na współdzielonym hostingu w kraju za granicą. Serwer bazy danych i serwer WWW działają na różnych komputerach. Serwer bazy danych ma prawie 1000 baz danych.

Jak mogę przetestować i dowiedzieć się, gdzie jest problem?

Odpowiedzi:

5 dla odpowiedzi № 1

Ponieważ istnieje ponad 1000 wspólnych baz danychzasoby Chciałbym zrobić ukłucie, które może być twoim problemem .... Jeśli połączysz się z bazą danych, a wykonanie prostego zapytania zajmie 5 sekund, możesz odgadnąć problem.

Dodałbym funkcję stopera na"testpage", która działa na twoim serwerze sieciowym. Powinno to dać ci podstawowe informacje, aby zobaczyć, czy istnieje "szyjka butelki" w oczekiwaniu na bazę danych, aby zwrócić zapytanie. Jeśli dotarłeś tak daleko, podejrzewam, że byłby to twój serwer sieciowy.

Ostatnią opcją byłoby ustawienie prostegoNiskie urządzenie z serwerem DB i serwerem sieciowym i wystarczy przetestować. W zależności od tego, ile ruchu odwiedza twoja strona, powinieneś być w stanie dobrze zorientować się w czasie jej reakcji.

Narzędzia takie jak YSlow może również być pomocna, jednak zazwyczaj są one używane bardziej do precyzyjnego dostrajania.


1 dla odpowiedzi nr 2

Ponieważ korzystasz z usługi hostingu współdzielonego, domyślam się, że to twój problem. Konkurujesz o zasoby serwera z każdą inną witryną i bazą danych na tych serwerach.

Aby się upewnić, skonfigurowałbym lokalne środowiskoktóry naśladuje twoje środowisko produkcyjne. Następnie wykonaj kilka standardowych testów warunków skrajnych, aby zobaczyć, jak to działa. Jeśli działa w taki sposób, w jaki można się tego spodziewać, prawdopodobnie jest to rozwiązanie hostingowe.

Dzięki współdzielonym rozwiązaniom hostingowym naprawdę dostajesz to, za co płacisz. Jeśli jest to system, który wymaga dużo większej prędkości niż dostaniesz, powinieneś spojrzeć na dedykowane rozwiązanie hostingowe.


1 dla odpowiedzi nr 3

Proponuję rzucić okiem na Tracing:

http://davidhayden.com/blog/dave/archive/2005/07/17/2396.aspx

Pozwala to zobaczyć ślad stosu (ostatnie zdjęcie w artykule) i zlokalizować wąskie gardła wydajności.


0 dla odpowiedzi nr 4

Szybkie rozwiązanie, które opracowałem, aby zachować logiwydajność w mojej aplikacji internetowej może ci w tym pomóc. Mam serwer WWW i serwer DB z podobną aplikacją. Napisałem usługę WWW, która uruchamia procedurę przechowywaną "benchmarking" i zwraca czas wykonywania. Napisałem aplikację wygrywającą, która działa na moim serwerze programistycznym, która wywołuje usługę sieci Web, przekazuje mu nazwę procedury składowanej do uruchomienia i czas trwania całego żądania. Aplikacja wygrywa zapisuje dane do pliku dziennika i uruchamia się co 10 minut jako zaplanowane zadanie. Dodatkowe dzwonki i gwizdy obejmują automatyczne wysyłanie e-maili do członków zespołu, gdy wydajność przekracza określony próg 3 razy z rzędu, nie łączy się i gdy po powolnym okresie odzyskuje normalną wydajność.

Zapewnia to ogólne wskazanie, w jaki sposóbdoświadczenie użytkownika na stronie internetowej będzie w danym momencie i będzie dla niego ostrzeżeniem - nie jest to najlepsze rozwiązanie, ale kilka miesięcy temu napisałem je kilka godzin temu i wykorzystałem dane, które tworzy do rozwiązywania problemów wiele celów.