首页 新闻 会员 周边 捐助

iis 缓存的问题

0
[已关闭问题]

由于网站访问人数多,程序采用了大量的缓存
当重启服务器时,IIS 总是不能及时响应请求,过一段时间就提示  "Service unvaible"。

怀疑是并发访问时,IIS响应一个请求,从数据库读取数据,然后把数据缓存保存的过程中间,又响应一个请求,因为这时候缓存还没有生成,又从数据库读取数据,然后试图保存数据缓存,不断地循环,导致IIS无法及时响应请求,请求到达一定数量(默认的最大请示数量是2000),就报错了。

这只是我的猜想,我想这么做:IIS处理请求的时候,判断缓存有没有,如果没有,则从数据库读取数据,同时“锁定”这段程序,如果此时又有请求进来,而缓存还是没有生成,因为前面已经“锁定”了这段程序,先不响应这个请求。

现在我不知道自己的猜想对不对,如果是对的,我也不知道如何“锁定”程序,多线程的 lock 不知道在这里适应不适用?

头痛中,今天服务器一天都加载不了,服务器重启了N次。希望大家指点一下

yangjun的主页 yangjun | 初学一级 | 园豆:17
提问于:2010-04-19 20:13
< >
分享
其他回答(3)
0

cache肯定不是lock那么简单的实现线程安全,至少很想读写锁那样可以并发读取

是不是缓存太多了,iis占用内存太多就出问题啊,要不用进程外缓存

LittlePeng | 园豆:3445 (老鸟四级) | 2010-04-19 20:51
看看服务器内存,cpu。web和数据库的都要。分析到底那块是瓶颈。web服务器资源不够只好多搞台服务器了,优化代码貌似来不及。不是很高该站点可以设置多开两个进程,可以提高并发
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-04-20 12:54
0

楼主的思路似乎是有问题。要么是快速读取数据,并缓存。要么是直接读取。何来“IIS处理请求的时候,判断缓存有没有,如果没有,则从数据库读取数据,同时“锁定”这段程序,如果此时又有请求进来,而缓存还是没有生成,因为前面已经“锁定”了这段程序,先不响应这个请求......”

Shapley | 园豆:255 (菜鸟二级) | 2010-04-20 08:17
“要么是快速读取数据,并缓存。要么是直接读取” 可能我表达的不清楚,我说的意思就是这个意思呀。第一次请求是读取数据并缓存,第二次是读取缓存。我的疑问是,并发访问的时候。。。。。
支持(0) 反对(0) yangjun | 园豆:17 (初学一级) | 2010-04-20 08:57
0

哎 这种 很深的问题 我无法想象 也好难做 只有听大家说说了

念念啊 | 园豆:415 (菜鸟二级) | 2013-09-12 14:03
0

楼主,这问题解决的怎么样了?同样遇到这问题。

D-Greet | 园豆:178 (初学一级) | 2015-06-07 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册