26. juni 2007 - 15:08Der er
6 kommentarer og 1 løsning
Deling af filer mellem webservere (best practice)
Hvis jeg har flere webservere stillet op i Load Balancing som skal kunne oprette/ændre/slette de samme filer, hvad er så den bedste måde at gøre det på?
- Jeg har prøvet at mappe et netværksdrev til en mappe på en tredje server hvor filerne så lægges, men der er en masse problemer for webapplikationer ved at tilgå netværksdrev.
- Jeg har også leget med tanken om at have et program til at replikere alle filerne så alle filer er i lokale mapper på alle serveren, men bryder mig ikke om risikoen for at en fil måske ikke er nået at blive kopieret over endnu når den skal bruges.
God idé. Jeg kan se fordelene ved det, idet min database i forvejen skal kunne tilgås af alle webservere og er skalerbar.
En ulempe er, at det samlede system bruger flere ressourcer for at levere en fil til brugeren. Men så kan jeg jo bare koble en ekstra database-server på :)
Ikke så mange ekstra ressourcer. Jeg lavede engang en test med ASP.NET og MySQL som database.
Resultat:
File (1 threads): 1,9 get per second File (10 threads): 2,2 get per second File with web app cache (1 threads): 6,6 get per second File with web app cache (10 threads): 16,1 get per second File directly by web server (1 threads): 17,6 get per second File directly by web server (10 threads): 20,1 get per second Database (1 threads): 10,7 get per second Database (10 threads): 11,8 get per second Database with web app cache (1 threads): 15,4 get per second Database with web app cache (10 threads): 19,6 get per second File (1 threads): 1,9 get per second File (10 threads): 2,2 get per second File with web app cache (1 threads): 16,7 get per second File with web app cache (10 threads): 19,4 get per second File directly by web server (1 threads): 17,1 get per second File directly by web server (10 threads): 20 get per second Database (1 threads): 10,7 get per second Database (10 threads): 11,9 get per second Database with web app cache (1 threads): 17,3 get per second Database with web app cache (10 threads): 19,6 get per second File (1 threads): 1,9 get per second File (10 threads): 2,1 get per second File with web app cache (1 threads): 16,8 get per second File with web app cache (10 threads): 17,8 get per second File directly by web server (1 threads): 17,6 get per second File directly by web server (10 threads): 20,1 get per second Database (1 threads): 10,7 get per second Database (10 threads): 11,6 get per second Database with web app cache (1 threads): 17,1 get per second Database with web app cache (10 threads): 19,5 get per second
Jeg kan ikke helt gennemskue hvad der gemmer sig bag hver linje. Det er godt hvis hastigheden ikke tager skade af det, men da jeg påstod systemet bruger flere ressourcer var det også at nu skal webapplikationen streame filen gennem sin hukommelse - det skulle den ellers ikke.
Vi har allerede implementeret løsningen med vedhæftede filer i databasen. Tak for tippet.
File = ASP.NET script som streamer fil File with web app cache = samme men hvor der bruge Cache File directly by web serve = filen serves direkte af IIS udenom ASP.NET Database = hentes fra database Database with web app cache = samme men hvor der bruges Cache
Ok, jeg forstår. De resultater er relevante fordi det ofte er de samme filer som hentes igen og igen. Det er det så godt nok ikke i mit scenarie - da er det mange filer som typisk kun hentes én gang hver. Tak for en herlig og brugbar oversigt.
Så kan du jo stryge mulighederne med brug af cache.
Jeg ligger et svar.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.