MicroDreamSoft

 

DNN网站出现服务不可用

前几天,在调试DNN网站的时候,当数据量一大,发现网站速度特别慢。

而且动不动就出现服务不可用的提示。

 

经过半个小时的调整后,总算又恢复了正常。因为在DNN山海经里一说,发现大家似乎都有这个问题,估计也会有其他朋友遇到,因此把我的一些心得体会写出来,给大家一点启示。因为是几天前的事情了,具体的一些提示信息等的可能记不清楚了。但是具体思路应该是对的。

 

首先是查看windows的应用程序日志,可以发现提示asp.net的内存使用超过60%的提示,造成aspnet_wp.exe被结束重启。

 

观察windows的内存使用情况,发现sqlserver和aspnet_wp.exe 2个进程的内存达到了将近1G。我使用服务器的物理内存就只有1G。

 

首先,我将sql server的内存进行了限制,限制最大到300M。

 

发现还是不行。

 

于是想到的是因为我在DNN的Host配置中

Page State Persistence: Memory

Module Caching Method: Memory

Performance Setting: Heavy Caching

 

因此我将这几个配置降低,改成以下配置:

 

Page State Persistence: Page

Module Caching Method: Disk

Performance Setting: Moderate Caching

 

进行这样更改后,基本能正常访问了,但是发现只要多访问几下,马上还是会出现内存超过60%的问题。只是现在出现的次数少点。

 

没有办法,只好更改machine.config中<processModel>节点中对内存的限制,

将memoryLimit改为150,也就是允许使用物理内存的150%。这时基本正常了。

 

以上是具体的解决过程。

 

通过这个过程,我有以下感想:

 

1、首先是我采用的是永日的文章管理模块,当我的数据量不是很大的时候,没有出现这个问题,但当我数据上了万条以后就出现了,感觉它的这个性能优化做的不是很好,怀疑它的List显示模块没有对数据进行很好的缓存和优化。同时,感觉这种没有源代码的东西很烦,尤其是在碰到问题的时候,因为这种属于小东西,不可能有那么好的售后服务,于是对于使用者来说就会很痛苦。所以看来如果要采用文章管理模块,尽量还是自己写,或者开源的。

      我之所以采用永日这个东西,主要是因为我做的这个项目时间很紧,我从接触DNN,到项目完成只有3个月时间。当时的要求是必须开源,而且要基于Asp.Net,并且要很好的继承原先asp网站的数据,这这么短的时间里,自己写个这样的框架不太现实,而Asp.net开源中,DNN无疑是最为耀眼的CMS框架。 

 

2、DNN的性能确实很成问题,如果没有很好的服务器配置,很难流畅的运行。因此,象小型的个人网站,购买空间的这种小型网站,采用DNN不是很好,因为有点杀鸡用牛刀的感觉。首先是DNN的目标并不是个人网站,而是主机供应商;其次是DNN没有免费的文章管理模块,而对于国内的这种网站来说,这块是非常重要的。

 

对于服务器配置问题,我下一步准备采用更好的服务器配置,可能会采用几个CPU和几个G的服务器进一步测试。

 

3、对于上面的性能缓存问题,最好根据自己的内存进行配置,否则可能适得其反,因为如果如果缓存很大的话,对内存和cpu都是有损耗的,有个人可能会说只对内存有损耗,怎么会对cpu有损耗呢?原因是管理缓存,查找缓存的时候对cpu有影响,因此如果cpu和内存跟不上,反而造成性能下降。

 

      接触DNN也有2,3个月了,分析了它很多的源代码,学到了很多知识,其中有正面,也有反面的。

      例如其中采用的Provider设计方式就是值得借鉴的,同时例如DataProvider和xxxDataProvider这种继承架构感觉就不太好,这里应该采用接口,而不是抽象类,这样xxxDataProvider可以继承自统一的xxxDataProviderBase类,这样不需要在每个xxxDAtaProvider类中都有那些读取连接字符串等等的一些公用操作。

     经过很多的思考后,觉得DNN需要改进的东西还有很多很多,至少对于我自己的项目来说是这样。对于里面一些设计思想,我可能会继续学习,不过也有了搭建自己的类似架构的想法。

 

 

posted on 2008-08-04 10:48  微梦软件  阅读(450)  评论(1编辑  收藏  举报

导航