![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pewien problem, gdyż pracuję obecnie nad serwisem, który ma 10, 000 unikalnych wizyt dziennych (150 online). Nie jest to jakoś specjalnie dużo, ale wystarczyło, abym miał problem z jego optymalizacją. Jest to serwis z mp3 ! Obecnie serwis stoi na potężnym dedyku, bo aż 8 gb ram, inne parametry też tak samo potężne jak ten ram, ale... Strona działa dobrze z wyjątkiem tego, że gdy wchodzę w podstronę, to ładuje się ona ~35 - 50 sekund. Problem jest w tym, że baza danych ma około 500, 000 rekordów z piosenkami i ciągle się powiększa. Myślę, że dojdzie do miliona. Wszystko ładnie działa, wyniki wyszukiwania są zapisywane w cache i nie ma problemów. Gdy wybieram pojedyńczy utwór, aby go przesłuchać ładuje mi się akcja MORE w której jest mniej więcej taka budowa(mój własny framework, proszę nie krytykować. chodzi tylko o zaprezentowanie kodu):
Oznacza to, że skrypt pobiera ID piosenki z linka i do zmiennej Name zapisuje np. moreinfo-6312, następnie sprawdza czy istnieje cache o danej nazwie lub czy w nie jest "przeterminowany" (raz na tydzień). Jeśli tak - pobiera dane z bazy danych. Zapytanie wygląda mniej więcej tak:
na końcu wyświetla dane z cache. Nie wiem dlaczego, ale to mi obciąza baardzo serwis. Moje przypuszczenia to, albo układ plików cache: - app/cache/ : TUTAJ SĄ WSZYSTKIE PLIKI CACHE, NIE MA PODZIAŁÓW NA KATALOGU (SYSTEM DEBIAN 4 - ponoć może być milion plików i to nic nie zmienia) albo ... no nie wiem.. miał ktoś taki problem? z góry dzięki, Matix. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 44 Dołączył: 23.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam pewien problem, gdyż pracuję obecnie nad serwisem, który ma 10, 000 unikalnych wizyt dziennych (150 online). Nie jest to jakoś specjalnie dużo, ale wystarczyło, abym miał problem z jego optymalizacją. Jest to serwis z mp3 ! Obecnie serwis stoi na potężnym dedyku, bo aż 8 gb ram, inne parametry też tak samo potężne jak ten ram, ale... Strona działa dobrze z wyjątkiem tego, że gdy wchodzę w podstronę, to ładuje się ona ~35 - 50 sekund. Problem jest w tym, że baza danych ma około 500, 000 rekordów z piosenkami i ciągle się powiększa. Myślę, że dojdzie do miliona. Wszystko ładnie działa, wyniki wyszukiwania są zapisywane w cache i nie ma problemów. Gdy wybieram pojedyńczy utwór, aby go przesłuchać ładuje mi się akcja MORE w której jest mniej więcej taka budowa(mój własny framework, proszę nie krytykować. chodzi tylko o zaprezentowanie kodu):
Oznacza to, że skrypt pobiera ID piosenki z linka i do zmiennej Name zapisuje np. moreinfo-6312, następnie sprawdza czy istnieje cache o danej nazwie lub czy w nie jest "przeterminowany" (raz na tydzień). Jeśli tak - pobiera dane z bazy danych. Zapytanie wygląda mniej więcej tak:
na końcu wyświetla dane z cache. Nie wiem dlaczego, ale to mi obciąza baardzo serwis. Moje przypuszczenia to, albo układ plików cache: - app/cache/ : TUTAJ SĄ WSZYSTKIE PLIKI CACHE, NIE MA PODZIAŁÓW NA KATALOGU (SYSTEM DEBIAN 4 - ponoć może być milion plików i to nic nie zmienia) albo ... no nie wiem.. miał ktoś taki problem? z góry dzięki, Matix. Spróbuj mimo wszystko podzielić cache na katalogi, to że system może obsługiwać milion plików w katalogu to nie znaczy, że będzie to działać szybko. Ponadto może zamiast robić jeden potężny serwer lepiej podzieliś ten serwer na kilka (serwer plików, serwer www, serwer bazy danych). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Hmm mysle ze podzielenie to nie ma sensu, dlatego ze samo wyszukiwanie rekordow z bazy danych dziala bardzo szybko. Zastanawiam sie tylko dlaczego bardzo wolno dziala pobieranie jednego wyniku. hmm....
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
to coś podejrzanie wygląda. na pewno masz pozakładane indexy na te pola?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Problem z działaniem podstrony danego utworu rozwiązany. Przy każdym unikalnym wejściu, dawalem $this->model->addVisited(), co dodawało +1 do bazy danych w tabeli `downloaded`. Myślałem, że to nie będzie aż tak uciążliwe, ale po usunięciu tej linijki, skrypt ładuje się 0.5 - 2 sekund, maksymalnie. Dziwne.
Jest jeszcze jeden problem, bo nie wiem jak zoptymalizować wyszukiwarkę, tz. mam coś takiego:
Problem nieco śmieszny. Mam sobie formularz z polem `query` gdzie jest wpisywana nazwa utworu. Jeśli nie jest ono puste - robi redirect na strona.pl/search/nazwa+utworu.html. I teraz pytanko, Można to jakoś szybciej załatwić? Sam redirect zajmuje jakieś 1-2 sekund. -edit- Oczywiście, są pozakładane indeksy. Dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował matix 15.01.2008, 14:27:24 |
|
|
![]() ![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:10 |