欢迎光临
我们一直在努力

昨天我用手机软件登陆网站查看统计信息的时候,发现平时能够自动登陆的51LA统计突然不能自动登陆了,刚开始以为密码被盗了,但随后输入密码同样可以访问,排除了疑虑,但发现页面与平日有所不同了,有了一层一层的色彩,我以为是51LA系统升级了呢,但后来竟然有一个令我惊喜的发现,网站名称下面显赫的字眼: 享有我要啦 VIP 贵宾服务!!!

建站超值云服务器,限时71元/月

   我在《写给WEB2.0的站长 不仅仅是泼冷水》谈到了WEB2.0的一些实际问题,下面的将会是一个系列,完成2.0系列的一些技术难题的终极解决方案。

    用户在线是很多WEB2.0网站都会遇到的问题,其实是个再也简单不过的问题,但其实也是一个难度最高的程序,现在分析一下网络上常见的在线解决访问,并提出一个终极方案。

方案一:数据库记录

    这个是用的最多的一个方案了,动网论坛,DISCUZ等都是,一般的程序员也会这么想这么做,对于小流量网站,我们无可厚非,使用不会出问题了,如果是大流量网站:

    试想一下,如果用户每次更新页面都要进行查询,更新最后活动时间,会出现什么问题?你的在线程序比你整个网站的负载都要高,如果这个在线程序甚至不是独立的域名的话,那么就死定了。
temp表的负载会高的惊人,而数据库日志也会以每小时100M的速度增加

方案二:Appliction变量

    这个应该也是比较常见的方案了,速度很快,缺点也很明显,只能记录次数,不能记录更详细一点的信息了。

方案三:内存中的DATASET

    原发是一个.net程序员,页面还写出了详细的代码,但是,这个程序员可能就不知道有个大量,有个并发的问题,维护在内存中的变量被并发修改就会立刻崩溃,基本上不能用的代码,估计这个程序员的站点的流量每天不超过1000个IP,但是还有很多没有体验过的人在吹捧这个代码如何的好。其实如果你的站点的10分钟在线人数超过20个你就会发现了,这个程序本身就是错误的,不能用,呵呵。

总结:

方案一: 通用,但不能实现负载,数据库压力太大
方案二:性能好,但不能记录详细信息
方案三:能记录详细信息,性能还行,但是根本就不能用

思考:

    有没有一种方案能综合三种方案的优点,还不占用系统资源呢,OK,拿出一点独门绝创的东西出来(实际测试,2W在线的情况下P43.0的CPU不超过10%)。

    其实还是内存表,内存中维护一个在线列表,为了解决并发的问题我们在每次操作更新的时候仅仅LOCK一下,问题解决。

    再问:    那么多的并发内存修改是可以的,但是如何CPU会不会高?列表的遍历会不会浪费时间!OK,我们再来优化一下。

    再来:如果我把在线用户分组,每个组分100个用户,然后每个组的序列号记录在HASH表中,HASH表中再保存每组内存ArrayList的数据,那么LOCK的话仅仅需要LOCK这个100个用户了,遍历问题解决掉,在线人数越多,性能越好(CPU可以控制在7%了)。

    再问,时这样,在线用户还是请求还是需要通过系统来解决,再高的话怎么办?

    OK,咱们来个终极的优化方案:

    还是用户分组,100个用户一组,但是WEB server只负责把把列表输出为静态文件,列表每分钟更新一次,客户短用AJAX来请求查询状态。

    再问:但是有人就问了,AJAX涉及一个跨域的问题,其实这个问题更简单了。给页面一个domain属性即可看一下CPU,是多少,我想你会笑掉大牙的…我可以负责任的说,普遍的刷新时间是20分钟,你的WEBserver可以调整到 3秒来刷新。

    站长网 疯狂代码原发,转载请注明出处

    下篇再提供一个关于在线短信,实时请求的终极解决方案,敬请关注

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 昨天我用手机软件登陆网站查看统计信息的时候,发现平时能够自动登陆的51LA统计突然不能自动登陆了,刚开始以为密码被盗了,但随后输入密码同样可以访问,排除了疑虑,但发现页面与平日有所不同了,有了一层一层的色彩,我以为是51LA系统升级了呢,但后来竟然有一个令我惊喜的发现,网站名称下面显赫的字眼: 享有我要啦 VIP 贵宾服务!!!
分享到: 更多 (0)

相关推荐

  • 暂无文章