IIS7 problem med stora responses

Permalänk
Avstängd

IIS7 problem med stora responses

Hej.
Hej!

Vi har ett problem, IIS7 vägrar släppa minne när man skickar stora filer, så varje fil tar lika mycket i minnet som filen är stor, har du några sådana responses igång samtidigt så crashar appen rätt fort.

jag har skrivit lite testkod som efterliknar produktionskoden.. (jag har kommenterat det som skiljer mot prodkoden).

Minnet fylls mycket fortare än vad filen skickas över nätverket så av nån anledning så exekverar

OutputStream.Write(buffer, 0, buffer.Length);

utan att skickar nått, den cachar istället datat och skickar det sedan i den takt som klienten/servern förmår, vilket resulterar i att minnet tar slut.

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Threading; namespace HttpHandlerTest { public class FileHandler : IHttpHandler { public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { context.Response.Buffer = false; context.Response.BufferOutput = false; context.Response.DisableKernelCache(); int buffSize = 8192; int itterations = 1024 * 500; int contentLength = buffSize * itterations; //Simulerar en fil på disk på 4 gig. if (context.Request.UserAgent.Contains("MSIE")) { context.Response.AddHeader("Content-Transfer-Encoding", "binary"); } context.Response.ContentType = "application/octet-stream"; context.Response.AddHeader("Content-Length", contentLength.ToString()); context.Response.AddHeader("Content-disposition", "attachment; filename=" + "tuckel.bin"); var buffer = new byte[buffSize]; Random rand = new Random(); rand.NextBytes(buffer); //Slumpar fram lite binär content. //Denna for loop ersätter att läsa en fil från disk, istället läser vi samma buffer om och om igen. for (int i = 0; i < itterations; i++) { if (!context.Response.IsClientConnected) break; context.Response.OutputStream.Write(buffer, 0, buffer.Length); context.Response.Flush(); } context.Response.Close(); } } }

Visa signatur
Permalänk
Medlem

Har du Output Caching igång i din web.config ? Ta upp web.config och sök på "cach" och läs på om resultaten, t.ex. <outputCache>. Finns lite videoguider på Learn IIS7 : The Official Microsoft IIS Site

Permalänk
Avstängd

Den är avstängd, hjälper ej :/

Visa signatur
Permalänk

Testa att lägga ut detta på Stackoverflow, borde vara lättare att reda ut det då

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase