惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
GbyAI
GbyAI
WordPress大学
WordPress大学
小众软件
小众软件
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
A
About on SuperTechFans
月光博客
月光博客
F
Fortinet All Blogs
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
Jina AI
Jina AI
博客园 - 聂微东
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
Last Week in AI
Last Week in AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog
aimingoo的专栏
aimingoo的专栏
P
Privacy International News Feed
Martin Fowler
Martin Fowler
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
NISL@THU
NISL@THU
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 叶小钗
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
S
Security @ Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
IT之家
IT之家
B
Blog RSS Feed

博客园 - wiseman

universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法 升级framework4.0后form认证票据失效的问题 vs2010下连接sql2000的一些问题 IIS ftp的一个问题:home directory inaccessible MS SQLServer2000 的孤立用户问题及解决. 服务器部署.NET 3.5的问题 愚蠢的错误 - wiseman - 博客园 VS2005项目迁移至VS2008初体验. Linux学习笔记:REHL AS4的上网配置,Http服务安装及配置,ftp服务的安装及配置 Linux学习笔记:需求和安装 通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建. WebService problem:The remote name could not be resolved 简单的WEB程序压力测试. MS ASP.NET AJAX 1.0 Released! 用C#编写flash Application! Atlas提交中文时乱码的完整解决方案. 困扰了两天的问题... .NET2.0中Form验证的问题. 一句C#代码的分析.
烦人的CommunityServer
wiseman · 2007-04-27 · via 博客园 - wiseman

CS2.0的在线列表一直就不能正确的显示在线人数,一直很忙也没时间去管,今天越看越郁闷,狠下心花了半天的时间来找问题的究竟
CS的缓存很庞大,在线列表也当然使用了缓存,大致流程是:
用户执行某个页面的浏览
获取了当前用户的状态
SetLocation(),把用户的当前在线状态写入UsersOnline这个类里的哈希表里(会员表或游客表)
在线用户的写入就是上面这些,需要提一下的是,这里面UsersOnline用单件模式来实现唯一性,但是实例对象不是用静态方式存储,而是以Cache方式存起来,这样一来可以遵循整个CS系统的缓存结构,二来缓存的方式也更加强大(依赖条件,Callback函数等)

接下来是在线用户的消去。正常情况下,只有一个途径会从缓存中消去在线用户(这里不存在缓存过期问题,因为上述缓存建立时是永不过期的),这个途径就是通过Jobs来定时执行消去方法。
在CS中,所有定时执行的类叫一个job,从IJob继承,这里负责在线用户消去的类叫做AnonymousUserJob,具体执行的方法是private void CleanUsers(int settingsid),里面包含了Member和Guest的2个消去方法,他们的作用就是从会员表和游客表中除去已经过了n分钟没有执行动作的用户。
CS处理这个问题非常的马虎,直接hard code了2个参数,5和10,意思是,在执行检查时,5分钟没有活动的游客将被除去,10分钟没有活动的会员将被除去。如果你需要修改,你只能在代码里修改这2个值,然后重新编译,强烈建议自己把这2个值存到config里或者是siteSetting里。

后记:
我把这2个值改完之后,更新了程序,发现在线用户显示有时高有时低,特地写了个程序监视Cache,发现Cache隔了很短的时间就被清空了一次,这导致用户列表的Cache被频繁重置,根本无法正确的反映当前用户在线的信息。
这个问题我个人认为是由于CS系统占用服务器内存很大,导致服务器需要频繁回收Cache,使得Cache失效。但是这里也有疑点,我服务器上内存使用一般才700M左右,而IIS的进程池我并没有限定虚拟内存大小,而且缓存时我设定的优先级是aboveNormal,这个即使需要回收也应该是排在很后的。
在我放CS的服务器上同时还放有3个站点程序,我试着新建了个线程池然后把那3个站点都归入新的线程池中,CS独占一个线程池,这时,在线用户信息显示正常了。
这个问题的答案我并不满意,现在还在继续观察服务器的状态,如果有新的可能,我会来这里再公布我的新结论。

CS2.0系统庞杂,本身性能极差,而缓存使用泛滥,颗粒度的控制很糟糕,造成对服务器的压力巨大,有无数次想要重写一个自己满意的论坛,但是一直没有时间和精力,只好在CS上慢慢的修改,但是目前看来,如果不能对整个内核和缓存结构做出重写的话,依然不能解决根本问题。现在唯一的解决方法是静态化,把CS的帖子浏览和论坛列表静态化来解决用户浏览速度过慢的问题。