做的网站联盟目前大概有1000多个,每个单独的网站都有一部分数据是通过webservce到数据库总服务器《独立的服务器》获取的现在的问题是:数据库承受不了这么多网站的访问(百度爬虫很频繁的访问每个独立网站服务器,从生成的静态缓存页面可以看出来,经过爬虫的服务器,每次缓存都会增长几百M),老在数据库连接超时;
现在已经为每个单独的网站建立了静态缓存,但访问没有缓存的页面时,有时候还是会连接超时;访问的主要有三个表,每个表中的数据都在100W左右,用SQL性能工具(SQL SERVER PROFILER)监视时,同一条SQL语句有时候查的很快,有时候查询的很慢,我估计是并发时造成的阻塞具体原因不清楚已经对每个网站访问webservice的次数据进行了优化,比如一个页面有三个位置要显示总服务器的数据,查询数据库时,将三个表的数据组成一个DataSet,然后返回到对应的网站数据库中建立索引,关键字查询时建立全文索引等等差不多已经优化到了极致,优化得我大脑都快萎缩了,但偶尔还是会出现数据库超时,如果以后1000多个网站有几十,几百个流量大了,这样的情况肯定会让数据库服务器直接挂掉的。。压力大啊!!!求大鸟来解困也。。

解决方案 »

  1.   

    你可以对程序和网站的整体框架进行一次梳理。
    搞清楚瓶颈到底出在哪里?
    通过分析程序,和监控数据库 你应该可以找出访问最频繁的数据表。对于这些数据表 再继续进行分析,将其分为两类
    1 查询最频繁的数据表 每个查询语句都使用with no lock
    2.对于查询很多 但是很少修改的表 可以考虑将其放入缓存中 这样就不需要到数据库中查询这些内容了。
    ——————
    不好意思 我是用手机来回复 打字吃不消了,先说这么多。
      

  2.   

    优化到极致?有很多数据假设每一次查询统计都是同一个结果,你为什么还反复地查询统计呢?为什么不学习设计缓存机制呢?比如csdn的一个站点负责产生.net栏目的帖子列表,那么顶多只有当有新的帖子/回复时才应该查询数据库。假设子站进行300次首页查询,这个站点才进行一次首页查询更新,那么显然设计正确的缓存依赖策略,这个网站的数据库压力就应该降低到几乎300分之一才对。
      

  3.   

    ——“比如一个页面有三个位置要显示总服务器的数据,查询数据库时,将三个表的数据组成一个DataSet,然后返回到对应的网
    站”在程序中有没有使用cache?
    像这样的网站 你应该从整个架构上考虑cache的使用。
    网站——cache——数据库