最近一段時間,我總是遇到服務器用一段時間後就會卡頓!具體表現為客戶端的java語言開發的應用程序在做業務操作的時候會卡頓或者提示程序無影響的現象,而且是所有連接到這一臺服務器的所有客戶端的程序都有這樣的現象;這樣的情況下,就定位到了服務器上可能存在問題了。馬上通過網絡遠程服務器,但是這時卻提示無法遠程該服務器!難道是服務器直接宕機了?直奔機房,通過直連的顯示器查看該服務器,發現這臺服務器也沒有死機,機器機箱外殼指示燈也無異常。但是在操作服務的時候特別卡,連操作雙擊我的電腦的這麼一個步驟進入到我的電腦的盤符列表界面都要等上十幾秒中。
後來在百度N遍不放棄的態度的搜索和過濾後,最終確認了之前我多次懷疑的問題。就是服務器的可用內存過小導致的服務器裡的各種程序應用不能正常運行的問題。之前只是懷疑,因為每次出現這種卡頓故障,重啟一下服務器就可以恢復了。之前也百度過多遍,但是一直沒有查到比較官方的理由依據。下圖就是微軟官方的證明了。
接下來我就根據官網上的所說的步驟來驗證存在這個問題,如下:
1、通過網址http://technet.microsoft.com/en-us/sysinternals/ff700229下載SysInternals RamMap 工具進行查看緩存是否存在持續不斷增長中。
2、再一步使用服務器自帶的工具進行查證是否存在這個問題。
做完上面的步驟後就可以看到緩存是不是一直增加了,由於我的服務器的截圖是重啟後的截圖了,所以沒有呈現到一直增大的趨勢圖。(因為當時服務器已經卡到沒有辦法動了,只能重啟了)
如果有問題的話應該是顯示如下圖的樣子。
然後,就要解決這個問題了;
1、從微軟網站下載一個叫 Microsoft Windows Dynamic Cache Service 的工具;但是我嘗試微軟官網的這個下載網址都無法正常下載,只是能看到下圖的這個界面,點擊進去卻無法打開。後來通過百度在其他網址找到了Microsoft Windows Dynamic Cache Service這個工具。
2、根據自己服務器的操作系統是32位(在下載的文件的I386文件夾目錄下複製DynCache.exe文件)還是64位(在下載的文件的AMD64文件夾目錄下複製DynCache.exe文件)到相應的目錄下複製複製工具中的DynCache.exe文件到服務器操作系統盤的system32文件夾的根目錄下。
3、通過命令行窗口生成服務。
輸入以下命令(注意=和值之間一定要有空格):
sc create DynCache binpath= %SystemRoot%\\System32\\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
4、雙擊執行已下載下來的的文件夾裡的註冊文件DynCache.reg。
5、在註冊表中找到MaxSystemCacheMBytes(位置HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\DynCache\\Parameters ),雙擊它,選擇“十進制”,在數值裡輸入要限制最大的緩存數(單位是MB),輸入800就是限制緩存最大為800MB,輸入0為不限制。
6、重啟服務器後就生效了。因為註冊表修改後需要重新啟動計算機之後才會生效,不重啟之前應用的是修改之前的方案。
7、如果後期需要停用這個改變的話,可以在“命令提示符”中依次輸入sc stop DynCache —— 回車 —— sc delete DynCache —— 回車,然後重啟服務器就可以停用了。
閱讀更多 抓狂的小鳥 的文章