Toon posts:

[ASP.net] De theorie achter web statistieken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor het volgende zou ik graag wat advies willen hebben; ik ben sinds een tijdje bezig met mijzelf asp.net aan te leren. Ik gebruik hiervoor boeken en enkele tutorials.
Nu heb ik inmiddels mijn eerste projectje bijna af, een soort portal. Nu wil ik echter een soort statistieken overzicht gaan maken om te kunnen monitoren hoe het bezoek gedrag eruit ziet.

Mijn idee was om triggers te maken die bij bepaalde events; bv page load, session start, session end of bij bijvoorbeeld het versturen van een formulier gegevens wegschrijft in de achterliggende database.

De tabel ziet er ongeveer zo uit:

Event/object naam, tijd+datum, IP, ingelogd(boolean).

Ik denk door het verzamelen van deze gegevens voldoende materiaal te hebben om aggegraties en andere fantastische berekeningen te kunnen maken.

Om dit te kunnen verwerken zal er dus een dbs connectie en dataset moeten zijn. Mijn vraag is nu hoe kan ik dit het beste aanpakken? Ik heb gelezen dat het niet wenselijk is om dbs connecties te hebben open staan. Voor mijn idee is het echter nu wel noodzakelijk om dat op het moment dat de app. gestart wordt er eigenlijk continue bezoekers gedrag in de database moeten worden weggeschreven.... Zou iemand mij iets van theorie over dit kunnen geven? Ik heb wel al andere counters bekeken, maar die zijn ten eerste niet dbs driven en ten tweede zeer beperkt in het registreren van data. Bijvoorbaat dank!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

Als je een grote site hebt is het misschien beter om de webservers logs bij te houden, en die te gebruiken voor de stats.

Als je met een db gaat werken zul je toch steeds naar de db moeten schrijven. Je hoeft niet steeds een connectie te maken. Ik doe zelf zo simpele db acties zo(pseudo):
code:
1
2
3
4
5
6
   function ExecQuery(string sql)
   {
     db = MakeConnection
     db.Exec(sql)
     db.close
   }

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Zoiets zou het moeten zijn, echter dit gaat veel performance kosten steeds al is het maar een klein beetje data wegschrijven in de dbs? Het is wel een rustige site, ik vermoed zo rondom de 200 bezoekers per week at most.
Dit zou SQL server en IIS dus wel moeten kunnen uitvoeren zonder merkbaar performance verlies?

Verwijderd

Lijkt me geen probleem :)

Je zou ook nog eea in de application cache kunnen stoppen en dan per x loggings de boel wegschrijven.

Verwijderd

Topicstarter
Dank u, nou dan gan ik nu maar bij elk event wat gemeten moet worden een update query toevoegen die de nodige gegevens wegschrijft.

Voor events dacht ik aan :

Page loads
Tab used (navigatie dmv tabStrip object)
Succesvol logins
Failed logins
Session starts
Session ended

Suggesties zijn natuurlijk van harte welkom :)

Verwijderd

Het lijkt me ook zeer nuttig om te weten welke pagina's een user (gekoppeld aan SessionId of IP) bekijkt, en hoelang een sessie duurt.

Het schijnt dat het helemaal geen extra tijd kost om steeds de connectie te verbreken en te openen (door connection pooling), het wordt zelfs aangeraden. Dus de oplossing die Don Facundo geeft lijkt me prima.

  • oZy
  • Registratie: Juli 2001
  • Laatst online: 13:04

oZy

Ik gebruik hetzelfde principe als wat Don Facundo eerder vertelde. Alleen dan op een site met gemiddeld 3500 users/dag. Ik had er ook mijn twijfels over maar dat gaat verder prima qua performance. Ook de 1.3 miljoen records p/jaar maken voor SQL Server weinig uit lijkt me.

Verwijderd

Topicstarter
KoenM, De door jouw genoemde gegevens kan ik toch herleiden uit: de tabs, en uit session_Start en uit Session_End...

Ik heb nu even snel een test pagina gemaakt.....
Het werkt, en je merkt er echt niks van in de performance.....

Bedankt voor alle hulp...!

Verwijderd

Topicstarter
Nou inmiddels heb ik een aardige statistieken pagina ontwikkeld, inclusief de mogelijkheid om een bepaalde gebruiker te volgen.

Waar ik nu tegen aan loop is het volgende:
Om het totaal aantal sessies uit te lezen heb ik een functie gemaakt die bij een sessie start in mijn dbs de sessie kolom/tabel met 1 ophoogt en bij een sessie einde de sessie kolom met 1 vermindert.

Nu weet ik echter dat dit beter kan, dmv het applicatie object.

Ik heb hier wat studie naar vericht op MSDN en kwam via het applicatie object op : Sessions Active dit schijnt een functie te zijn van het applicatie object. Mijn probleem is echter dat ik op dit moment nog in een "zoek een tutorial en maak aan de hand hiervan zelf iets grappigs" stadium ben als asp.net programmer, en heb eigenlijk geen idee hoe ik hiermee aan de gang zou moeten.

Ik denk zelf dat ik een variabele moet declareren waarin de waarde van de session active functie moet worden weggeschreven.

Ik hoop dat er iemand is die een zetje kan geven in de juiste richting, ik heb zelf hier het boek SAMS ASP.net, maar die biedt geen antwoorden over deze speciefieke vragen, op msdn heb ik dus wel wat gevonden maar niet van het nivieau waar ik op dit moment mee aan de gang kan ;( .

De volgende links heb ik bekeken:
[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconperformancecountersforaspnet.asp"]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconperformancecountersforaspnet.asp[/url]

[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebsessionstatehttpsessionstateclasscounttopic.asp"]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebsessionstatehttpsessionstateclasscounttopic.asp[/url]

thx in advance!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Als ik het goed begrijp wil je het aantal actieve sessies op een bepaald moment hebben?

Ik ken wel een artikel voor ASP

[url="http://www.asp101.com/resources/active_users.asp"]http://www.asp101.com/resources/active_users.asp[/url]

Nu behandeld deze de theorie vrij uitgebreid, met een duidelijk voorbeeld. Volgens mij is deze op zich wel vrij makkelijk om te schrijven naar ASP.Net

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Dankje, ipv van een dbs maken ze hier gebruik van een applicatie variabele, ok, dit kan ik volgen en is waarschijnlijk een mooie oplossing. Echter met >net moet je dus met iets als session.count het aantal actieve sessies kunnen uitlezen, deze functie probeer ik dus toe te passen, echter staat er erg weinig over gedocumenteerd op het Inet, wel enkele bugs reports over het sessie object in de MSDN newsgroepen, maar daar heb ik weinig aan, en zijn niet van toepassing op Count.....

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Het 2e artikel gaat over het aantal items in een session variable (niet het aantal actieve sessies)

1e is veel te ingewikkeld voor dit tijdstip van de dag.. ;)
Ga het morgen nog wel eens lezen.

Voor nu:
[url="http://www.aspheute.com/english/20000809.asp"]http://www.aspheute.com/english/20000809.asp[/url]
(geloof met voorbeeldje)

en

[url="http://www.google.nl/search?q=State+Server+Sessions+Active+.Net&ie=UTF-8&oe=UTF-8&hl=nl&lr="]http://www.google.nl/search?q=State+Server+Sessions+Active+.Net&ie=UTF-8&oe=UTF-8&hl=nl&lr=[/url]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1