2010-06-08 7 views
2

J'ai un site avec plusieurs pages pour chaque entreprise et je veux montrer comment leur page fonctionne en termes de nombre de personnes qui viennent à ce profil.Suivi des impressions/visites par page Web

Nous nous sommes déjà assurés que les bots sont exclus.

Actuellement, nous enregistrons chaque hit dans une base de données avec insertion (pour la première demande dans un jour à un profil) ou mise à jour (pour les demandes suivantes dans un jour à un profil). Mais, étant donné que les demandes sont passées de quelques milliers par jours à des dizaines de milliers par jour, ces insertions/mises à jour causent des problèmes de performance majeurs.

En supposant qu'aucune solution JS, quelle sera la meilleure façon de gérer cela? J'utilise Ruby sur Rails, MySQL, Memcache, Apache, HaProxy pour le spectacle général.

Toute aide sera grandement appréciée.

Thx

Répondre

1

Voici 4 façons de résoudre ce problème, à partir des estimations faciles à complexes et précises:

  1. piste seulement un pourcentage (10% ou 1%) des utilisateurs, puis multiplier pour obtenir une estimation du nombre. Après les 50 premiers comptes pour une page donnée, commencez la mise à jour du compte 1/13ème fois par un compte de 13. Cela aide si c'est quelques pages qui font beaucoup de comptes tout en gardant les petits comptes précis. (utilisez 13 car il est difficile de remarquer que l'incrément n'est pas 1).
  2. Sauvegardez les décomptes exacts dans une couche de cache comme memcache ou la mémoire du serveur local et enregistrez-les tous sur le disque lorsqu'ils atteignent 10 décomptes ou ont été dans le cache pendant un certain temps.
  3. Construire une couche de comptage distincte 1) a toujours le nombre actuel disponible dans la mémoire, 2) persiste le nombre de ses propres tables/base de données, 3) a des appels qui permettent d'ajuster les deux endroits