2

我有一个网站,每个公司都有几个页面,我想展示他们的页面在访问此个人资料的人数方面的表现。

我们已经确保机器人被排除在外。

目前,我们正在使用插入(针对一天中对配置文件的第一个请求)或更新(针对一天中对配置文件的以下请求)记录数据库中的每个命中。但是,鉴于请求已从每天几千个增加到每天几万个,这些插入/更新会导致严重的性能问题。

假设没有 JS 解决方案,那么处理这个问题的最佳方法是什么?

我正在使用 Ruby on Rails、MySQL、Memcache、Apache、HaProxy 来运行整体展示。

任何帮助都感激不尽。

谢谢

4

2 回答 2

2

http://www.scribd.com/doc/49575/Scaling-Rails-Presentation-From-Scribd-Launch 您应该从幻灯片 17 开始阅读。我认为性能不是问题,如果可以构建这样的解决方案网站和 scribd 一样大。

于 2010-06-08T22:52:09.633 回答
1

这里有 4 种方法来解决这个问题,从简单的估计到复杂和准确的:

  1. 仅跟踪一定百分比(10% 或 1%)的用户,然后乘以估算数量。
  2. 在给定页面的前 50 次计数之后,开始将计数更新 1/13 的时间,计数为 13。这有助于在几页进行多次计数的同时保持小计数的准确性。(使用 13,因为很难注意到 incr 不是 1)。
  3. 将准确计数保存在缓存层(如 memcache 或本地服务器内存)中,并在计数达到 10 个或已在缓存中保存一定时间时将它们全部保存到磁盘。
  4. 构建一个单独的计数层,1) 始终在内存中提供当前计数,2) 将计数保存到它自己的表/数据库中,3) 具有调整两个位置的调用
于 2012-04-17T21:32:21.183 回答