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需要改進的東西還有很多很多,至少對于我自己的項目來說是這樣。對于里面一些設計思想,我可能會繼續學習,不過也有了搭建自己的類似架構的想法。
?
?
轉載于:https://www.cnblogs.com/MicroDreamSoft/articles/1259654.html
總結
以上是生活随笔為你收集整理的DNN网站出现服务不可用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10g 中RETENTION GUARA
- 下一篇: Oracle中删除数据的一个小技巧