Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Cache na plikach, i jego wydajność przy dużym obciążeniu
osl
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


Na wstępie, sorry za taki ogólny opis - nie za wiele mogę zdradzić - warunki umowy...
Do rzeczy. Podczas opracowywania nowego projektu zaświtała mi w głowie myśl, żeby cachować wyniki (niektórych) zapytań SQL.
Dla uproszczenia dalszych rozważań, przyjmuję, że wszystko (tj apache/mysql/pliki) jest na jednej fizycznej maszynie.
Raz dwa napisałem banalną klasę - przy zapytaniu o pobranie danych, sprawdź czy jest dla tego cache, jeśli nie - pobierz i wygeneruj cache.
Jeśli dane się zmieniają - po prostu usuń plik cache.
Przedmiotem tego cache są dane ściśle związane z użytkownikiem.
Pięknie, działa - ponad 20 razy szybciej niż pobieranie danych z MySQL, choć zapytanie to tak naprawdę złączenie dwóch tabel po id użytkownika.
Pięknie, fajnie - ale dla jednego użytkownika.

Wobec powyższego, pytanie moje brzmi - jak się może zachować taki banalny cache w momencie, kiedy z serwisu korzysta ok 15000 użytkowników, regenerowanie cache przy aktualizowaniu danych? 15k użytkowników = 15k plików ekstra, które trzeba "wyszukać", wczytać, usunąć - choć nie przewiduję plików większych niż 1KB.

Moje największe obawy są związane z dyskiem - czas dostępu, w pewnym sensie "szeregowość" odczytu tych plików... czy przypadkiem przy takim obciążeniu taki cache nie zacznie bardziej szkodzić niż pomagać?

Potraktujcie proszę powyższe jako problem "abstrakcyjny" - nawet przy dobrych rezultatach w obecnym projekcie czegoś takiego nie wdrożę, ale w przyszłości? kto wie...
I na koniec podkreślę - w tym konkretnym przypadku nie interesują mnie inne metody cache niż dump danych do pliku.

jest tu wiele osób o większej wiedzy niż moja - rozwiejcie moje wątpliwości ;)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
osl
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


ależ ja wiem, że cache jest wymagany (IMG:style_emoticons/default/wink.gif)
dokładnie wiem jak działa itepe idede
Cache poszczególnych stron jest, korzystam z opensourcowego CMSa, ale zastanawiam się jak mogę go przyspieszyć.
Tutaj chodzi mi tylko o cache poszczególnych zapytań SQL.
Wyniki zapytań serlializuję i wrzucam do pliku.

Chodzi mi tylko i wyłącznie o przypadek dumpowania i regenerowania takiego cache w przypadku dużego obciążenia - specyfika projektu jest taka, że 15k użytkowników może logować się i edytować dane, które są w cache - w jednym momencie. Nie chciałbym zabić dysku (IMG:style_emoticons/default/wink.gif)
W chwili obecnej testowo mam cache dla jednego zapytania, w przypadku kolejnych + moment krytyczny = regeneraja N x 15k plików. Plus - wszelki cache pochodzący od samego CMSa, sam silnik... nie za dużo operacji I/O na raz?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 02:20