【正文】
后來根據(jù)Bon的建議,我們修改了IIS application pool的設(shè)定如下,解決過多請求不能及時處理,而造成CPU過高的問題。每當(dāng)CPU過高的時候,產(chǎn)線會大面積的反應(yīng)說慢(這點(diǎn)和連接到哪臺AP有關(guān)系)。有個同事分享了他們的經(jīng)驗(yàn)如下(原話分享):我們有一些程式是server跑的Job,并有越來越多之勢。誰也不曾想,這里埋下了一個深深的地雷,據(jù)微軟的人講,這樣分發(fā)的程式到應(yīng)用環(huán)境,你有多少內(nèi)存恐怕都不夠。這只是一個簡單的例子,有更復(fù)雜的。 二, 有人不習(xí)慣(或者一時疏忽)加上0088行的代碼。 0008:打開數(shù)據(jù)庫連接。,同樣對哪些有經(jīng)驗(yàn),也帶來一些啟示和參考。 如果象這樣的函數(shù)很多的話,你就等著一個錯誤警告頁面彈出來,如Database Connection Timeout….等訊息。那么內(nèi)存有多大呢,不是無限大吧,也是有限的,所有運(yùn)行上述代碼的最終結(jié)果是,系統(tǒng)的執(zhí)行效率越來越慢,有人就懷疑,我有內(nèi)存1到2G的,加上虛擬內(nèi)存就更大,我只能說你的懷疑沒錯。 Dim DT new Databable….………….Next 還有一種寫法Dim DS new Dataset Dim DT new Databable…Foreach (DataRow row in (“”,”ProductID”)DS=GetDataseDT=GetDatatable…………….………….Next 正確的寫法是:Dim DS new Dataset Dim DT new Databable…TryForeach (DataRow row in (“”,”ProductID”)DS=nothing ‘每次使用,都先把內(nèi)存空間釋放出來DT=nothing ‘每次使用,都先把內(nèi)存空間釋放出來DS=GetDataseDT=GetDatatable…………….………….Next Catch ex As ExceptionThrow exFinallyEnd Try另外,提醒大家一點(diǎn),記得用 For Each 語句替代For i=0 to Rowcount1,這樣的效率改善也是明顯的。四、實(shí)際操作分享篇上面三個環(huán)節(jié),任何一個發(fā)生問題,都會影響到系統(tǒng)的效率。 在關(guān)掉了這只程式后,… 進(jìn)程請求過多,導(dǎo)致CPU無法及時處理,程序效率反應(yīng)較慢。結(jié)論大致是說,沒有進(jìn)程占用了特別高的CPU,也沒有進(jìn)程占用CPU時間過長。: Different application pools are different , so each application pool’s maximum memory usage is 2G.3. Can setup maximum CPU usage on each application pool?Aamp。t serve IISReset can )。 下面也是原話Pls help to check the Run In Rack Job program . It will no response after running two or three days . the AP server Memory usage will over . after we close the the program , Memory will decrease to .