Ⅰ SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
SQL Server佔用內存過高的原因是SQL Server本身內存回收機製做的不好。SQL Server運行越久,佔用內存會越來越大。
解決方法:
1.在程序裡面啟動SQL Server 2008,系統登錄,右鍵點擊服務名,選擇「屬性」。
3.最後重啟SQL Server服務。
拓展資料:
SQL Server 是一個關系資料庫管理系統。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同開發的,於1988 年推出了第一個OS/2版本。
在Windows NT 推出後,Microsoft與Sybase 在SQL Server 的開發上就分道揚鑣了,Microsoft 將SQL Server移植到Windows NT系統上,專注於開發推廣SQL Server 的Windows NT 版本。Sybase 則較專注於SQL Server在UNⅨ操作系統上的應用。
SQL Server 2000 是Microsoft 公司推出的SQL Server資料庫管理系統,該版本繼承了SQL Server 7.0 版本的優點,同時又比它增加了許多更先進的功能。
網路——sql server
Ⅱ 伺服器內存佔用過高如何解決
如果不是系統或軟體的問題,沒有別的什麼好辦法,最有效的就是加物理內存,現在伺服器一般起步8g/16內存,跑資料庫或虛擬化的內存會比較大,大多64gb以上。
Ⅲ Cpu和內存 使用率過高怎麼解決
CPU佔用率高有多種原因引起的,如垃圾過多,電腦中病毒,軟體沖突,驅動沒有經過認證等等。
1、在任務管理器裡面可以查看CPU和內存的使用率,鍵盤上同時按住Ctrl+Alt+Delete,點擊「啟用任務管理器(T)」就可以看到當前CPU和內存實際的使用率是多少了。如圖
Ⅳ win10系統「服務主機:DCOM伺服器進程啟動器」內存佔用高,怎麼解決!
如下的解決方法請參考:
打開任務管理器,在電腦下方任務欄上右鍵----任務管理器
任務管理器,點擊「CPU」顯示最高的那個就是「服務主機本地系統(網路受限)」
解決辦法是關閉Superfetch這個服務
在我的電腦圖標或者「這台電腦」圖標上右鍵----管理----服務和應用程序----服務
服務裡面找到Superfetch這個服務,右鍵----停止,重新打開任務管理器,可以馬上看到效果,或者說電腦馬上就沒那麼卡了,搞定
Ⅳ linux佔用內存太高,有沒有好的解決辦法呀
且體的還得看伺服器的配置。
一般有如下幾種可能:
1) 有程序佔用大量CPU,使用top命令來檢查(看看是否有java程序鎖死之類的故障)
2) 有程序佔用大量內存,使得內存真正不夠用了(這個才是真正需要加內存的時候),比如由於MySQL在較大負載下運行容量為GB級別的資料庫導致內存不夠用,需要給伺服器插入更多物理內存
3) 磁碟系統讀寫故障,IO吞吐錯誤造成CPU負載上升,需要光碟引導進入單用戶模式掃描修復磁碟。
但也可以手動進行內存釋放,具體操作如下:
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches0
首先,/proc/sys/vm/drop_caches的值,默認為0
[root@dbserver01 mysql]# sync
手動執行sync命令(描述:sync 命令運行 sync 子常式。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件) 《Linux就該這么學》 一起學習。
[root@dbserver01 mysql]# echo 3 > /proc/sys/vm/drop_caches
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches值設為3 [root@dbserver01 mysql]# free -m
Ⅵ Linux中Cache內存佔用過高解決辦法
在Linux系統中,我們經常用free命令來查看系統內存的使用狀態。
默認顯示單位是kb,我的伺服器是128G內存,所以數字顯得比較大。這個命令幾乎是每一個使用過Linux的人必會的命令,但越是這樣的命令,似乎真正明白的人越少(我是說比例越少)。一般情況下,對此命令輸出的理解可以分這幾個層次:
1. 不了解。這樣的人的第一反應是:天啊,內存用了好多,70個多G,可是我幾乎沒有運行什麼大程序啊?為什麼會這樣?Linux好占內存!
2. 自以為很了解。這樣的人一般評估過會說:嗯,根據我專業的眼光看的出來,內存才用了17G左右,還有很多剩餘內存可用。buffers/cache佔用的較多,說明系統中有進程曾經讀寫過文件,但是不要緊,這部分內存是當空閑來用的。
3. 真的很了解。這種人的反應反而讓人感覺最不懂Linux,他們的反應是:free顯示的是這樣,好吧我知道了。神馬?你問我這些內存夠不夠,我當然不知道啦!我怎麼知道你程序怎麼寫的?
4. 根據目前網路上技術文檔的內容,我相信絕大多數了解一點Linux的人應該處在第二種層次。大家普遍認為,buffers和cached所佔用的內存空間是可以在內存壓力較大的時候被釋放當做空閑空間用的。但真的是這樣么?
在論證這個題目之前,我們先簡要介紹一下buffers和cached是什麼意思:
Free中的buffer和cache:(它們都是佔用內存):
buffer : 作為buffer cache的內存,是塊設備的讀寫緩沖區
cache: 作為page cache的內存, 文件系統的cache
如果 cache 的值很大,說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住,那麼磁碟的讀IO bi會非常小。
cache是高速緩存,用於CPU和內存之間的緩沖;
buffer
是I/O緩存,用於內存和硬碟的緩沖
buffer和 cache 是兩個在計算機技術中被用濫的名詞,放在不通語境下會有不同的意義。在Linux的內存管理中,這里的buffer指Linux內存的:Buffer cache。這里的cache指Linux內存中的:Page
cache。翻譯成中文可以叫做緩沖區緩存和頁面緩存。在歷史上,它們一個(buffer)被用來當成對io設備寫的緩存,而另一個(cache)被用來當作對io設備的讀緩存,這里的io設備,主要指的是塊設備文件和文件系統上的普通文件。但是現在,它們的意義已經不一樣了。在當前的內核中,page cache顧名思義就是針對內存頁的緩存,說白了就是,如果有內存是以page進行分配管理的,都可以使用page cache作為其緩存來管理使用。當然,不是所有的內存都是以頁(page)進行管理的,也有很多是針對塊(block)進行管理的,這部分內存使用如果要用到cache功能,則都集中到buffer cache中來使用。(從這個角度出發,是不是buffer cache改名叫做block cache更好?)然而,也不是所有塊(block)都有固定長度,系統上塊的長度主要是根據所使用的塊設備決定的,而頁長度在X86上無論是32位還是64位都是4k。
明白了這兩套緩存系統的區別,就可以理解它們究竟都可以用來做什麼了。
Page cache主要用來作為文件系統上的文件數據的緩存來用,尤其是針對當進程對文件有read/write操作的時候。如果你仔細想想的話,作為可以映射文件到內存的系統調用:mmap是不是很自然的也應該用到page cache?在當前的系統實現里,page cache也被作為其它文件類型的緩存設備來用,所以事實上page cache也負責了大部分的塊設備文件的緩存工作。
Buffer cache則主要是設計用來在系統對塊設備進行讀寫的時候,對塊進行數據緩存的系統來使用。這意味著某些對塊的操作會使用buffer cache進行緩存,比如我們在格式化文件系統的時候。一般情況下兩個緩存系統是一起配合使用的,比如當我們對一個文件進行寫操作的時候,page cache的內容會被改變,而buffer cache則可以用來將page標記為不同的緩沖區,並記錄是哪一個緩沖區被修改了。這樣,內核在後續執行臟數據的回寫(writeback)時,就不用將整個page寫回,而只需要寫回修改的部分即可。
Linux內核會在內存將要耗盡的時候,觸發內存回收的工作,以便釋放出內存給急需內存的進程使用。一般情況下,這個操作中主要的內存釋放都來自於對buffer/cache的釋放。尤其是被使用更多的cache空間。既然它主要用來做緩存,只是在內存夠用的時候加快進程對文件的讀寫速度,那麼在內存壓力較大的情況下,當然有必要清空釋放cache,作為free空間分給相關進程使用。所以一般情況下,我們認為buffer/cache空間可以被釋放,這個理解是正確的。
但是這種清緩存的工作也並不是沒有成本。理解cache是干什麼的就可以明白清緩存必須保證cache中的數據跟對應文件中的數據一致,才能對cache進行 釋放 。所以伴隨著cache清除的行為的,一般都是系統IO飆高。因為內核要對比cache中的數據和對應硬碟文件上的數據是否一致,如果不一致需要寫回,之後才能回收。
在系統中除了內存將被耗盡的時候可以清緩存以外,我們還可以使用下面這個文件來人工觸發緩存清除的操作:
[root@tencent64 ~]# cat /proc/sys/vm/drop_caches
1
方法是:
echo 1 > /proc/sys/vm/drop_caches
當然,這個文件可以設置的值分別為1、2、3。它們所表示的含義為:
sync //先做同步數據 防止數據部分丟失
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。slab分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的緩存對象。
#!/bin/bashecho "開始清理緩存"
sync;sync;sync #寫入硬碟,防止數據丟失
sleep 10 #延遲10秒
echo 1 > /proc/sys/vm/drop_cachesecho "清理結束"
設置定時任務
crontab -e
* 0 * * * /root/cleanBuff.sh
crontab -l //查看是否設置成功
Ⅶ Linux系統CPU/內存使用率過高的問題排查
伺服器出現由內存問題引發的故障,例如系統內部服務響應速度變慢、伺服器登錄不上、系統觸發 OOM(Out Of Memory)等。通常情況下當實例內存使用率持續高於90%時,可判斷為實例內存使用率過高。CPU/內存使用率過高的問題原因可能由硬體因素、系統進程、業務進程或者木馬病毒等因素導致。
筆者以前寫過一篇文章- Linux 下的 60 秒分析的檢查清單 ,適用於 任何性能問題 的分析工作,這一篇文章是關於CPU/內存使用率的具體的排查思路總結。
執行 top 命令後按 M ,根據駐留內存大小進行排序,查看 「RES」 及 「SHR」 列是否有進程佔用內存過高。按 P,以 CPU 佔用率大小的順序排列進程列表,查看是否有進程佔用cpu過高。
如果有異常進程佔用了大量 CPU 或內存資源,記錄需要終止的進程 PID,輸入k,再輸入需要終止進程的 PID ,按 Enter。
另外說明一下,top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制,最常用的是M和P。
CPU 空閑但高負載情況,Load average 是 CPU 負載的評估,其值越高,說明其任務隊列越長,處於等待執行的任務越多。執行ps -axjf命令,查看進程狀態,並檢查是否存在 D 狀態進程。D 狀態指不可中斷的睡眠狀態,該狀態進程無法被殺死,也無法自行退出。若出現較多 D 狀態進程,可通過恢復該進程依賴資源或重啟系統進行解決。
Linux 系統通過分頁機制管理內存的同時,將磁碟的一部分劃出來作為虛擬內存。而 kswapd0 是 Linux 系統虛擬內存管理中負責換頁的進程。當系統內存不足時,kswapd0 會頻繁的進行換頁操作。換頁操作非常消耗 CPU 資源,導致該進程持續佔用高 CPU 資源。
執行top命令,找到 kswapd0 進程。觀察 kswapd0 進程狀態,若持續處於非睡眠狀態,且運行時間較長並持續佔用較高 CPU 資源,執行 vmstat ,free,ps 等指令,查詢系統內進程的內存佔用情況,重啟系統或終止不需要且安全的進程。如果 si,so 的值也比較高,則表示系統存在頻繁的換頁操作,當前系統的物理內存已經不能滿足您的需要。 si 表示每秒從交換區寫入內存的大小(單位:kb/s) , so 每秒從內存寫到交換區的大小。
執行cat/proc/meminfo |grep-i shmem命令查看共享內存。
buddy可以以頁為單位獲取連續的物理內存了,即4K為單位。slab負責需要頻繁的獲取/釋放並不大的連續物理內存,比如幾十位元組。執行cat /proc/meminfo | grep -i SUnreclaim命令查看slab 內存。
標準的 4KB 大小的頁面外,內存大頁管理內存中的巨大的頁面,處理較少的頁面映射表,從而減少訪問/維護它們的開銷。執行cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize" 查看內存大頁。
內存使用率計算:
(Total - available)100% / Total
(Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total
cat /proc/meminfo查看信息含義: