(说明:本篇文章的出发点是,解决把数据从数据库搬到WINDOWS服务(内存)中而产生的检索、更新等问题。按照CQRS原则对Q端进行支持分布式的优化。)
起初,公司的网站是个小网站,每天访问几千IP,虽然我们两个技术看起来很忙,其实老板让做的东西都是些零碎东西,差不多百分之八十工作都是页面改版。看这个页面不顺眼,就改一版;那个页面不顺眼,也改一版。有时候一个页面一年内能改四五次。后来公司来了个SEO,作网站的优化。不久,网站开始卡,有时一卡几分钟,后来一天要崩溃几次。这样的情况持续了一星期,老板受不了了,说咱们别老是改版了,看看是哪出了问题,于是有了这篇文章。
我开始分析日志,发现网站的流量也涨了不少,最重要的是,搜索引擎蜘蛛来抓的很频繁。有一个重要的列表页,平均每秒要抓三次到五次。我对SEO说:你能不能让蜘蛛少来,给网站都抓坏了。SEO说:不行,来的少了索引就少,对网站优化不利。我一想也是,毕竟做个网站要给别人看。于是就开始分析是哪里的瓶颈。CPU,10%左右,正常。
内存,总数32G,用了20G左右,正常。
硬盘,资源监视器差不多顶格了。就是这里的问题了。
磁盘活动和 sqlserver profiler 的种种迹像表明:数据库查询占用了太多的硬盘资源,当硬盘IO跟不上的时候,IIS就会崩溃。
原因找到后,我尝试了多种解决方法:
1,缓存。网站的其他地方是有缓存的,但是这个列表页因为检索的条件很多ÿ