二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

给DNN网站加速

Posted on 2008-11-20 13:20  二十四画生  阅读(6419)  评论(7编辑  收藏  举报

     接触DNN已经有好几年了,用它做项目也有好几年了。用DNN做网站的最大好处就是快,方便调整页面布局样式,方便扩充功能。但是它也有一个致命的弱点就是访问速度慢。

     根据项目实践经验我发现影响访问速度的瓶颈其实不在web服务器上而是在数据库服务器上。在大并发访问量的情况下,数据库服务器的压力很大,CPU的占用率都在80%以上。有大量的请求都被阻塞,往往一个请求都需要等待1-2秒中才会被执行。知道了瓶颈问题,我们就可以从以下几个方面入手修改了。

1、优化数据量在20万条上的表结构的索引,加快单个select的查询速度

2、优化sql语句的写法。

3、对超大数据量的表,有必要的要进行分表处理。

     进行了以上调整后对sql执行这一块就会加快不少了。但是对于sql的请求并没有减少。浏览一个dnn页面往往要执行很多sql语句。有模块级有框架级的,要减少这方面的sql请求量,我们就需要从dnn的缓存下手了。

1、首先在“主机管理-->主机设置”中的缓存置中

基本上用默认设置就可以了,这样就可以解决框架级sql请求量,主要是tabinfo等。

2、在模块的模块设置中,设置合理的缓存时间就可以减少模块级的sql请求

只要是不经常变更的模块都可以设置这个缓存时间。它的原理是将这个模块生成的html缓存到一个文件或内存中去。
这样在页面载入的时候系统就会直接将这段缓存中的html展现出来而不会去调用具体的模块,从而这些模块中的种种sql请求都不会去执行了。

做了以上的优化后,就可以减轻不少数据库服务器的访问压力了。

接下来我们在从数据传输入手进一步的进行加速。

首先,我们在编写模块的时候,应该尽量的减少html代码量。关掉不必要的VIEWSTATE。

其次,DNN也为我们提供了一个Gzip压缩的功能,我可以在“主机管理-->主机设置”中启用它。

除此之外DNN还有几个功能,如果大家不需要可以将它关掉,这样也有助于提高性能。

1、日志功能。DNN中EventLog这个表的数据增长量是相当大的。如果大家不需要可以关掉它

在“Admin > Event Viewer”下,编辑日志设置。

 

以上就是这些错误类型,大家根据需要该关的就关。这样可以减少不少数据库的访问。

另外我们也可以在web.config中设置日记录的方式,如下图:

选用XMLLoggingProvider记录日志,它会把日志信息存储到xml文件中,这样也可减少数据库的访问。

2、日程调度中的编录索引功能。大家都知道DNN的搜索对中文索引不能很好的支持。所以既然他索引没有作用,那么还不如关掉它。

在“Host > Schedule”中

关于编录索引我建议大家可以更具DNN中编录索引的原理,加入提取中文分词功能,编写成一个小windows程序,在windows的日程调度中执行。这样既稳定又不会照成web服务器的压力。

总的来说DNN既然也是一个web程序,适用于其他web程序的优化方法和原则也都适用于它。大家有啥好的方法也希望能一起交流一下