DNN网站出现服务不可用
前幾天,在調(diào)試DNN網(wǎng)站的時(shí)候,當(dāng)數(shù)據(jù)量一大,發(fā)現(xiàn)網(wǎng)站速度特別慢。
而且動(dòng)不動(dòng)就出現(xiàn)服務(wù)不可用的提示。
?
經(jīng)過半個(gè)小時(shí)的調(diào)整后,總算又恢復(fù)了正常。因?yàn)樵贒NN山海經(jīng)里一說,發(fā)現(xiàn)大家似乎都有這個(gè)問題,估計(jì)也會(huì)有其他朋友遇到,因此把我的一些心得體會(huì)寫出來,給大家一點(diǎn)啟示。因?yàn)槭菐滋烨暗氖虑榱?#xff0c;具體的一些提示信息等的可能記不清楚了。但是具體思路應(yīng)該是對(duì)的。
?
首先是查看windows的應(yīng)用程序日志,可以發(fā)現(xiàn)提示asp.net的內(nèi)存使用超過60%的提示,造成aspnet_wp.exe被結(jié)束重啟。
?
觀察windows的內(nèi)存使用情況,發(fā)現(xiàn)sqlserver和aspnet_wp.exe 2個(gè)進(jìn)程的內(nèi)存達(dá)到了將近1G。我使用服務(wù)器的物理內(nèi)存就只有1G。
?
首先,我將sql server的內(nèi)存進(jìn)行了限制,限制最大到300M。
?
發(fā)現(xiàn)還是不行。
?
于是想到的是因?yàn)槲以贒NN的Host配置中
Page State Persistence: Memory
Module Caching Method: Memory
Performance Setting: Heavy Caching
?
因此我將這幾個(gè)配置降低,改成以下配置:
?
Page State Persistence: Page
Module Caching Method: Disk
Performance Setting: Moderate Caching
?
進(jìn)行這樣更改后,基本能正常訪問了,但是發(fā)現(xiàn)只要多訪問幾下,馬上還是會(huì)出現(xiàn)內(nèi)存超過60%的問題。只是現(xiàn)在出現(xiàn)的次數(shù)少點(diǎn)。
?
沒有辦法,只好更改machine.config中<processModel>節(jié)點(diǎn)中對(duì)內(nèi)存的限制,
將memoryLimit改為150,也就是允許使用物理內(nèi)存的150%。這時(shí)基本正常了。
?
以上是具體的解決過程。
?
通過這個(gè)過程,我有以下感想:
?
1、首先是我采用的是永日的文章管理模塊,當(dāng)我的數(shù)據(jù)量不是很大的時(shí)候,沒有出現(xiàn)這個(gè)問題,但當(dāng)我數(shù)據(jù)上了萬條以后就出現(xiàn)了,感覺它的這個(gè)性能優(yōu)化做的不是很好,懷疑它的List顯示模塊沒有對(duì)數(shù)據(jù)進(jìn)行很好的緩存和優(yōu)化。同時(shí),感覺這種沒有源代碼的東西很煩,尤其是在碰到問題的時(shí)候,因?yàn)檫@種屬于小東西,不可能有那么好的售后服務(wù),于是對(duì)于使用者來說就會(huì)很痛苦。所以看來如果要采用文章管理模塊,盡量還是自己寫,或者開源的。
????? 我之所以采用永日這個(gè)東西,主要是因?yàn)槲易龅倪@個(gè)項(xiàng)目時(shí)間很緊,我從接觸DNN,到項(xiàng)目完成只有3個(gè)月時(shí)間。當(dāng)時(shí)的要求是必須開源,而且要基于Asp.Net,并且要很好的繼承原先asp網(wǎng)站的數(shù)據(jù),這這么短的時(shí)間里,自己寫個(gè)這樣的框架不太現(xiàn)實(shí),而Asp.net開源中,DNN無疑是最為耀眼的CMS框架。?
?
2、DNN的性能確實(shí)很成問題,如果沒有很好的服務(wù)器配置,很難流暢的運(yùn)行。因此,象小型的個(gè)人網(wǎng)站,購買空間的這種小型網(wǎng)站,采用DNN不是很好,因?yàn)橛悬c(diǎn)殺雞用牛刀的感覺。首先是DNN的目標(biāo)并不是個(gè)人網(wǎng)站,而是主機(jī)供應(yīng)商;其次是DNN沒有免費(fèi)的文章管理模塊,而對(duì)于國(guó)內(nèi)的這種網(wǎng)站來說,這塊是非常重要的。
?
對(duì)于服務(wù)器配置問題,我下一步準(zhǔn)備采用更好的服務(wù)器配置,可能會(huì)采用幾個(gè)CPU和幾個(gè)G的服務(wù)器進(jìn)一步測(cè)試。
?
3、對(duì)于上面的性能緩存問題,最好根據(jù)自己的內(nèi)存進(jìn)行配置,否則可能適得其反,因?yàn)槿绻绻彺婧艽蟮脑?#xff0c;對(duì)內(nèi)存和cpu都是有損耗的,有個(gè)人可能會(huì)說只對(duì)內(nèi)存有損耗,怎么會(huì)對(duì)cpu有損耗呢?原因是管理緩存,查找緩存的時(shí)候?qū)pu有影響,因此如果cpu和內(nèi)存跟不上,反而造成性能下降。
?
???? ?接觸DNN也有2,3個(gè)月了,分析了它很多的源代碼,學(xué)到了很多知識(shí),其中有正面,也有反面的。
????? 例如其中采用的Provider設(shè)計(jì)方式就是值得借鑒的,同時(shí)例如DataProvider和xxxDataProvider這種繼承架構(gòu)感覺就不太好,這里應(yīng)該采用接口,而不是抽象類,這樣xxxDataProvider可以繼承自統(tǒng)一的xxxDataProviderBase類,這樣不需要在每個(gè)xxxDAtaProvider類中都有那些讀取連接字符串等等的一些公用操作。
???? 經(jīng)過很多的思考后,覺得DNN需要改進(jìn)的東西還有很多很多,至少對(duì)于我自己的項(xiàng)目來說是這樣。對(duì)于里面一些設(shè)計(jì)思想,我可能會(huì)繼續(xù)學(xué)習(xí),不過也有了搭建自己的類似架構(gòu)的想法。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/MicroDreamSoft/articles/1259654.html
總結(jié)
以上是生活随笔為你收集整理的DNN网站出现服务不可用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10g 中RETENTION GUARA
- 下一篇: Oracle中删除数据的一个小技巧