Hur tänker du mäta högbelastning då?
tjena tjena
jag fick en liten idé efter att ha läst på swesecure.com att jag vill ha en sida som kommer upp om det är hög belastning på sidan för tillfället.
hur kan jag skapa en sådan?
16 svar · 514 visningar · startad av greggan
tjena tjena
jag fick en liten idé efter att ha läst på swesecure.com att jag vill ha en sida som kommer upp om det är hög belastning på sidan för tillfället.
hur kan jag skapa en sådan?
Hur tänker du mäta högbelastning då?
Tanke: Borde det inte gå att klocka sidornas laddningstid under en period och ex. använda application_start/session_start i global.asax för att göra en redirect om laddingstiden är för lång?
jag har ingen aning om hur jag skulle kolla det.. det är därför jag frågar.. ;)
det jag vill veta är ungefär hur jag ska mäta om sidan är seg och på vilket sätt. på något sätt tiden det tar antar jag, men sen då?
om ni någon gång har varit inne på lunarstorm.se och sett att det kommer upp en sida lite då och då där det står att det är hög belastning eller liknande.. det är i den stilen jag menar.
I din Global.asax lägger du:
public class Global : System.Web.HttpApplication
{
private System.ComponentModel.IContainer components = null;
private DateTime _timer;
public Global()
{
InitializeComponent();
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
_timer = DateTime.Now;
}
protected void Global_PreRequestHandlerExecute(Object sender, EventArgs e)
{
TimeSpan ts = DateTime.Now - _timer;
if(ts.TotalMilliseconds > 600)
Server.Transfer("somepage.aspx");
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.PreRequestHandlerExecute += new EventHandler(this.Global_PreRequestHandlerExecute);
}
}
600 ändrar du till något värde som du anser vara lång laddingstid.
Sen kanske man kan använda något annat event än PreRequestHandlerExecute.
red//Tänkte lite fel första gången
Koden funkar, har dock inte testat det under belastning. Det är ju ett enkelt upplägg så om någon har tid att testa så kan de ju skriva hur det funkar.
tackar.. men tyvärr får jag det inte att funka...
jag har ingen global.asax fil.. måste jag lägga in något speciellt i den eller kan jag bara lägga in din kod där?
Om du inte har någon global.asax så är det väl lite svårt att få det att fungera.
Skapa en fil, global.asax, och i dess code-behind fil, global.asax.cs, klistrar du in ovan kod plus att du lägger till namespacen (tror det är dessa som är standard):
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using System.Diagnostics;
using System.Security.Principal;
using System.Text;
fick det att fungera nu... la dit <script> tagarna.. men det verkar inte fungera helt... satte ner timeouten på 1 millisekund.. och sidan var seg som fan, men jag hamnade inte på nån annan sida.. =/
men om jag lägger in koden i codebehind.. vad ska jag då lägga in i global.asax.. nu har jag blivit lite förvirrad... =/
Vilken miljö utvecklar du i?
jag sitter i Dreamweaver...
I ditt fall så skall global.asax bara innehålla det inom script taggarna. Du behöver ingen global.asax.vb.
så då gjorde jag rätt? men inget hände sen när jag skrev att timeout var 1 millisekund.. och sidan gick grymt segt. jag kom ändå rätt.