OVH Cloud OVH Cloud

Compteurs de visiteurs (Performance)

10 réponses
Avatar
Steeve
Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer à
développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait fait
ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou une
image cliquable), une ligne est insérée dans la Table Compteur de Sql
Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager, son
rôles, etc... Je peux donc faire des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
l'utilisateur ? Est-ce que je peux considérer ça négligeable?

Steeve

10 réponses

Avatar
Jimmy Perret
Bonjour.

Bien sur que le temps de chargement sera plus long puisque des opérations
supplémentaires vont être effectués.

Après il existe tout un tas de méthode pour accélérer l'affichage d'un site.

Je te conseille dans un premier temps de faire des benchs de tes deux
systèmes (avec et sans le compteur).

Ensuite, a toi de juger si ça vaut le coup ou non.

--
Blog : http://blogs.developpeur.org/orion/
Web : http://orion.fulinux.com


"Steeve" a écrit dans le message de news:

Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer à
développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait
fait ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien
(ou une image cliquable), une ligne est insérée dans la Table Compteur de
Sql Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager,
son rôles, etc... Je peux donc faire des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
l'utilisateur ? Est-ce que je peux considérer ça négligeable?

Steeve



Avatar
Pandodo
Bonjour.

Je pense que faire des appels répétés au serveur de données, lors de chaque
action de l'utilisateur loggé pourrait allourdir le traitement.
Ce qui serait peut etre intéressant de faire dans votre cas, c est de
stocker les valeurs de votre utilisateur dans une variable d application
(hashtable), et de mettre à jour les données sur le serveur toutes les 15 ou
20 minutes (à l aide d un timer dans le global.asax), en fonction des données
contenues dans votre variable.

Je vous souhaite une bonne journée.

"Steeve" wrote:

Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer à
développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait fait
ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou une
image cliquable), une ligne est insérée dans la Table Compteur de Sql
Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager, son
rôles, etc... Je peux donc faire des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
l'utilisateur ? Est-ce que je peux considérer ça négligeable?

Steeve





Avatar
Patrice
Le journal IIS ne suffirait-il pas ?

Tu peux normalement y ajouter des infos supplémentaires (comme le nom du
WebControl).

Patrice

--

"Steeve" a écrit dans le message de
news:
Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer à
développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait


fait
ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou une
image cliquable), une ligne est insérée dans la Table Compteur de Sql
Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager,


son
rôles, etc... Je peux donc faire des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
l'utilisateur ? Est-ce que je peux considérer ça négligeable?

Steeve




Avatar
Guy Bachelier
Bonjour,

Il serait peut etre bon de stocker toutes ces informations dans la session
utilisateur et les stockées dans la base lors de l'appel du SESSION_END
(global.asax).

Il est sur qu'il faudra optimiser ce stockage.

Guy

"Steeve" a écrit :

Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer à
développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait fait
ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou une
image cliquable), une ligne est insérée dans la Table Compteur de Sql
Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager, son
rôles, etc... Je peux donc faire des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
l'utilisateur ? Est-ce que je peux considérer ça négligeable?

Steeve





Avatar
Christophe Lauer [MS]
Bonjour,

[FU2 M.P.F.D.aspnet]

Pandodo wrote:
Je pense que faire des appels répétés au serveur de données, lors de
chaque action de l'utilisateur loggé pourrait allourdir le traitement.



Pourrait mais ce n'est pas prouvé. Il ne faut pas oublier que si la table
est assez petite (par exemple vidée tous les jours dans une autre table
d'archivage, au moment du lancement des calculs des stats) elle peut très
bien tenir entièrement en mémoire, donc pas d'accès disques pénalisants.

Ce qui serait peut etre intéressant de faire dans votre cas, c est de
stocker les valeurs de votre utilisateur dans une variable d
application (hashtable), et de mettre à jour les données sur le
serveur toutes les 15 ou 20 minutes (à l aide d un timer dans le
global.asax), en fonction des données contenues dans votre variable.




Je déconseille généralement l'option qui consiste à inventer une usine à
gaz, plus longue à écrire, à mettre au point et à maintenir, pour des
questions de performance qui ne sont pas prouvées a priori : Keep It Simple!

Je vous conseillerais plutôt d'écrire votre application de la façon la plus
normale, de faire des tests de performance en ayant pris soin de faire les
optimisations du design de la table et de la base, et éventuellement dans
une second temps de revoir ce design si vous mesurez des impacts importants
sur les performances, mais *après* avoir effectué un benchmark.

Vous trouverez de nombreux articles sur le web traitant du design de tables
et de bases pour optimiser les performances.

Au niveau de l'implémentation, j'aurais tendance à placer l'historisation
des consultations dans un HttpModule. L'intérêt est que c'est clairement
distinct et séparé du design et de l'implémentation de votre application :
vous pouvez le désactiver ou en modifier l'implémentation sans avoir à
retoucher à votre application. Si vous le désactivez, votre appliction
continue à fonctionner normalement.

C'est très clairement l'idée derrière les HttpModules. Vous pourrez vous
inspirer de cet article :
http://www25.brinkster.com/rchildress/content/referrerloghowto1.htm

Au fait, question subsidiaire : quel volume de trafic comptez-vous avoir sur
ce site ?

Cdt,

--
Christophe Lauer
Relations Techniques Editeurs de Logiciels
Division Développeurs et Plateforme d'Entreprise - Microsoft France
http://www.microsoft.com/france/msdn/

This posting is provided "AS IS" with no warranties, and confers no
rights.
Avatar
Pierre Lagarde [MS]
Bonjour,

Pour donner mon avis aussi voila des éléments fiables (pour moi)
Pour faire un compteur le moins intrusif possible c'est
-> Des images taggées comme le fait Xiti (appel asynchrone par le
navigateur aucune perte de performance dans l'affichage de la page)
Le plus rapide pour des logs il n'y a pas photos :
-> Ecriture de fichier à plat !
Puis chargement tous les soirs dans une base !

Bien sûre ce sont des solutions extrême pour du trafic extrême :)
Maintenant c'est loin d'être le plus souple et le httpmodule est un très bon
compromis.


--
Pierre Lagarde
Microsoft France

Steeve wrote:
Bonjour,

J'ai une question concernant la performance. Donc, avant de commencer
à développer mon idée, j'aimerais avoir votre avis.

Je voudrais implanter des compteurs de visiteurs, un peu comme
l'aurait fait ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique
sur un lien (ou une image cliquable), une ligne est insérée dans la
Table Compteur de Sql Server. Ainsi, je ramasse au vol les données
suivantes : L'IP de l'utilisateur, l'Url de la page, l'ID du
webcontrol, le nom de l'usager, son rôles, etc... Je peux donc faire
des stats sur mon site.

Est-ce que cela va alourdir la vitesse à laquelle mon site
s'affichera à l'utilisateur ? Est-ce que je peux considérer ça
négligeable?

Steeve


Avatar
Philippe [MS]
De plus, vous pouvez importer ces log IIS dans une base SQL Server et
travailler ensuite sur ces données !!!

http://www.microsoft.com/france/technet/produits/win2000s/info/info.asp?mar=/france/technet/produits/win2000s/info/iis5logs.html

Phil.

"Patrice" wrote in message
news:
Le journal IIS ne suffirait-il pas ?

Tu peux normalement y ajouter des infos supplémentaires (comme le nom du
WebControl).

Patrice

--

"Steeve" a écrit dans le message de
news:
> Bonjour,
>
> J'ai une question concernant la performance. Donc, avant de commencer à
> développer mon idée, j'aimerais avoir votre avis.
>
> Je voudrais implanter des compteurs de visiteurs, un peu comme l'aurait
fait
> ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou


une
> image cliquable), une ligne est insérée dans la Table Compteur de Sql
> Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
> l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de l'usager,
son
> rôles, etc... Je peux donc faire des stats sur mon site.
>
> Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera à
> l'utilisateur ? Est-ce que je peux considérer ça négligeable?
>
> Steeve
>
>




Avatar
Steeve
C'est un site intranet. Je ne m'attends pas à plus de 5 connections
simultanées sur le site.
Steeve



"Christophe Lauer [MS]" wrote in message
news:
Bonjour,

[FU2 M.P.F.D.aspnet]

Pandodo wrote:
> Je pense que faire des appels répétés au serveur de données, lors de
> chaque action de l'utilisateur loggé pourrait allourdir le traitement.

Pourrait mais ce n'est pas prouvé. Il ne faut pas oublier que si la table
est assez petite (par exemple vidée tous les jours dans une autre table
d'archivage, au moment du lancement des calculs des stats) elle peut très
bien tenir entièrement en mémoire, donc pas d'accès disques pénalisants.

> Ce qui serait peut etre intéressant de faire dans votre cas, c est de
> stocker les valeurs de votre utilisateur dans une variable d
> application (hashtable), et de mettre à jour les données sur le
> serveur toutes les 15 ou 20 minutes (à l aide d un timer dans le
> global.asax), en fonction des données contenues dans votre variable.


Je déconseille généralement l'option qui consiste à inventer une usine à
gaz, plus longue à écrire, à mettre au point et à maintenir, pour des
questions de performance qui ne sont pas prouvées a priori : Keep It


Simple!

Je vous conseillerais plutôt d'écrire votre application de la façon la


plus
normale, de faire des tests de performance en ayant pris soin de faire les
optimisations du design de la table et de la base, et éventuellement dans
une second temps de revoir ce design si vous mesurez des impacts


importants
sur les performances, mais *après* avoir effectué un benchmark.

Vous trouverez de nombreux articles sur le web traitant du design de


tables
et de bases pour optimiser les performances.

Au niveau de l'implémentation, j'aurais tendance à placer l'historisation
des consultations dans un HttpModule. L'intérêt est que c'est clairement
distinct et séparé du design et de l'implémentation de votre application :
vous pouvez le désactiver ou en modifier l'implémentation sans avoir à
retoucher à votre application. Si vous le désactivez, votre appliction
continue à fonctionner normalement.

C'est très clairement l'idée derrière les HttpModules. Vous pourrez vous
inspirer de cet article :
http://www25.brinkster.com/rchildress/content/referrerloghowto1.htm

Au fait, question subsidiaire : quel volume de trafic comptez-vous avoir


sur
ce site ?

Cdt,

--
Christophe Lauer
Relations Techniques Editeurs de Logiciels
Division Développeurs et Plateforme d'Entreprise - Microsoft France
http://www.microsoft.com/france/msdn/

This posting is provided "AS IS" with no warranties, and confers no
rights.




Avatar
Steeve
Je préfère développer des solutions maison plutôt que d'utiliser le Log
d'IIS. Je pense que je pourrais effectuer des requêtes SQL plus précises si
je choisis les données à stocker.



"Philippe [MS]" wrote in message
news:O%23b%
De plus, vous pouvez importer ces log IIS dans une base SQL Server et
travailler ensuite sur ces données !!!




http://www.microsoft.com/france/technet/produits/win2000s/info/info.asp?mar=/france/technet/produits/win2000s/info/iis5logs.html

Phil.

"Patrice" wrote in message
news:
> Le journal IIS ne suffirait-il pas ?
>
> Tu peux normalement y ajouter des infos supplémentaires (comme le nom du
> WebControl).
>
> Patrice
>
> --
>
> "Steeve" a écrit dans le message de
> news:
> > Bonjour,
> >
> > J'ai une question concernant la performance. Donc, avant de commencer


à
> > développer mon idée, j'aimerais avoir votre avis.
> >
> > Je voudrais implanter des compteurs de visiteurs, un peu comme


l'aurait
> fait
> > ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien (ou
une
> > image cliquable), une ligne est insérée dans la Table Compteur de Sql
> > Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
> > l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de


l'usager,
> son
> > rôles, etc... Je peux donc faire des stats sur mon site.
> >
> > Est-ce que cela va alourdir la vitesse à laquelle mon site s'affichera


à
> > l'utilisateur ? Est-ce que je peux considérer ça négligeable?
> >
> > Steeve
> >
> >
>
>




Avatar
Philippe [MS]
Bonjour,

L'avantage de la solution est qu'elle deviens générique. Rien ne vous
empèche d'ajouter des éléments cutoms dans votre log IIS comme indiqué par
l'un de nous. Ensuite, il ne vous rete qu'à développer la procédure qui
permet d'analyser les logs et de renseigner un schéma de tables bien à vous.
Ainsi vous pouvez par la suite faire évoluer les éléments que vous souhaitez
analyser.

Sinon, pourquoi pas une solution custom égalemement. Ce n'est qu'une idée
!!!

Phil.

"Steeve" wrote in message
news:
Je préfère développer des solutions maison plutôt que d'utiliser le Log
d'IIS. Je pense que je pourrais effectuer des requêtes SQL plus précises


si
je choisis les données à stocker.



"Philippe [MS]" wrote in message
news:O%23b%
> De plus, vous pouvez importer ces log IIS dans une base SQL Server et
> travailler ensuite sur ces données !!!
>
>



http://www.microsoft.com/france/technet/produits/win2000s/info/info.asp?mar=/france/technet/produits/win2000s/info/iis5logs.html
>
> Phil.
>
> "Patrice" wrote in message
> news:
> > Le journal IIS ne suffirait-il pas ?
> >
> > Tu peux normalement y ajouter des infos supplémentaires (comme le nom


du
> > WebControl).
> >
> > Patrice
> >
> > --
> >
> > "Steeve" a écrit dans le message de
> > news:
> > > Bonjour,
> > >
> > > J'ai une question concernant la performance. Donc, avant de


commencer
à
> > > développer mon idée, j'aimerais avoir votre avis.
> > >
> > > Je voudrais implanter des compteurs de visiteurs, un peu comme
l'aurait
> > fait
> > > ASP.NET 2.0. Donc, à chaque fois qu'un visiteur clique sur un lien


(ou
> une
> > > image cliquable), une ligne est insérée dans la Table Compteur de


Sql
> > > Server. Ainsi, je ramasse au vol les données suivantes : L'IP de
> > > l'utilisateur, l'Url de la page, l'ID du webcontrol, le nom de
l'usager,
> > son
> > > rôles, etc... Je peux donc faire des stats sur mon site.
> > >
> > > Est-ce que cela va alourdir la vitesse à laquelle mon site


s'affichera
à
> > > l'utilisateur ? Est-ce que je peux considérer ça négligeable?
> > >
> > > Steeve
> > >
> > >
> >
> >
>
>