由于网站访问人数多,程序采用了大量的缓存
当重启服务器时,IIS 总是不能及时响应请求,过一段时间就提示 "Service unvaible"。
怀疑是并发访问时,IIS响应一个请求,从数据库读取数据,然后把数据缓存保存的过程中间,又响应一个请求,因为这时候缓存还没有生成,又从数据库读取数据,然后试图保存数据缓存,不断地循环,导致IIS无法及时响应请求,请求到达一定数量(默认的最大请示数量是2000),就报错了。
这只是我的猜想,我想这么做:IIS处理请求的时候,判断缓存有没有,如果没有,则从数据库读取数据,同时“锁定”这段程序,如果此时又有请求进来,而缓存还是没有生成,因为前面已经“锁定”了这段程序,先不响应这个请求。
现在我不知道自己的猜想对不对,如果是对的,我也不知道如何“锁定”程序,多线程的 lock 不知道在这里适应不适用?
头痛中,今天服务器一天都加载不了,服务器重启了N次。希望大家指点一下
cache肯定不是lock那么简单的实现线程安全,至少很想读写锁那样可以并发读取
是不是缓存太多了,iis占用内存太多就出问题啊,要不用进程外缓存
楼主的思路似乎是有问题。要么是快速读取数据,并缓存。要么是直接读取。何来“IIS处理请求的时候,判断缓存有没有,如果没有,则从数据库读取数据,同时“锁定”这段程序,如果此时又有请求进来,而缓存还是没有生成,因为前面已经“锁定”了这段程序,先不响应这个请求......”
哎 这种 很深的问题 我无法想象 也好难做 只有听大家说说了
楼主,这问题解决的怎么样了?同样遇到这问题。