⑴ linux資料庫伺服器物理內存和虛擬內存滿了怎麼排查和解決
一、查看物理內存
執行如下命令即可查看物理內存,執行效果如下圖所示:
dmidecode -t memory | grep Size
二、配置空間
物理內存是沒辦法配置的,只能配置虛擬內存,在Linux系統即Swap分區。具體操作swap分區的方法如下:
⑵ SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
經常使用MSSQL的朋友都會發現一個小小的網站在運行若干天後MSSQL就會把伺服器上所有的內存都吃光,此時你不得不重新啟動一下伺服器或mssql來釋放內存,有人認為是 MSSQL有內存泄露問題,其實不然,微軟給我們了明確說明:在您啟動SQL Server 之後,SQL Server內存使用量將會持續穩定上升,即使當伺服器上活動很少時也不會下降。另外,任務管理器和性能監視器將顯示計算機上可用的物理內存穩定下降,直到可用內存降到 4 至 10 MB 為止。
僅僅出現這種狀態不表示內存泄漏。此行為是正常的,並且是 SQL Server 緩沖池的預期行為。
默認情況下,SQL Server 根據操作系統報告的物理內存載入動態增大和收縮其緩沖池(緩存)的大小。只要有足夠的內存可用於防止內存頁面交換(在 4 至 10 MB 之間),SQL Server緩沖池就會繼續增大。像在與SQL Server 分配內存位於相同計算機上的其他進程一樣,SQL Server 緩沖區管理器將在需要的時候釋放內存。SQL Server每秒可以釋放和獲取幾兆位元組的內存,從而使它可以快速適應內存分配變化。
更多信息
您可以通過伺服器內存最小值和伺服器內存最大值配置選項設置 SQL Server資料庫引擎使用的內存(緩沖池)量的上下限。在設置伺服器內存最小值和伺服器內存最大值選項之前,請查閱以下 Microsoft 知識庫文章中標題為'內存'一節中的參考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上強大的資料庫平台) Configuration Settings(確定正確的 sql server(WINDOWS平台上強大的資料庫平台) 配置設置)
請注意,伺服器內存最大值選項只限制 SQL Server 緩沖池的大小。伺服器內存最大值選項不限制剩餘的未保留內存區域,sql server(WINDOWS平台上強大的資料庫平台) 准備將該區域分配給其他組件,例如擴展存儲過程、COM 對象、以及非共享 DLL、EXE 和 MAPI 組件。由於前面的分配SQL Server專用位元組超過伺服器內存最大值配置是很正常的。有關此未保留內存區域中分配的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:316749 PRB:在使用大量資料庫時可能沒有足夠的虛擬內存
下面我們就來實戰如何限制MSSQL內存使用:
第一步:打開企業管理器雙擊進入要修改的MSSQL.
第二步:在左側MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框(最好打上SQL SP4補丁)
第三步:點擊內存選項卡. 在這里,你會看到MSSQL默認設置為使用最大內存,也就是你所有的內存,根據你的需要,設置它的最大值(一般為物理內存-128M)和最小值(一般為最大內存的1/4)吧.
第五步:設置完畢,重啟MSSQL服務,配置即可生效!
⑶ 怎麼解決伺服器內存佔用過高的問題呢
伺服器內存佔用過高的解決方法:
1,首先通過任務管理器進行進程排序,查找佔用內存較大的程序進程。一般佔用內存較大的進程有W3WP、sqlserver、mysqld-nt.exe;
2, 站點進程w3wp 可以在cmd命令行中通過 iisapp 命令來對應是那個網站佔用內存較大。可以通過設置回收時間、內存最大使用值或共用進程池來減少內存的佔用,但是如果要保證網站的訪問質量,還是建議升級至更高型號來解決;
3,資料庫 sql server 也可以通過資料庫的企業管理器來設置最大內存佔用,但是如果網站程序必須要佔用較大內存的話,設置後會發生頁面報錯、打不開等問題;
4,MYSQL本身會佔用較大虛擬內存,如果不使用mysql資料庫的話,可以將其停止。
⑷ 如何查看mysql內存佔用原因
查看 /proc/meminfo
Tips:
「大內存頁」也稱傳統大頁、大頁內存等有助於 Linux 進行虛擬內存的管理,標準的內存頁為 4KB,這里使用「大內存頁」最大可以定義 1GB 的頁面大小,在系統啟動期間可以使用「大內存頁」為應用程序預留一部分內存,這部分內存被佔用且永遠不會被交換出內存,它會一直保留在那裡,直到改變配置。(詳細介紹請看下面鏈接官方解釋)
那麼這么大頁內存是分配給誰的呢?
查詢一下:
shell> /proc/sys/vm/hugetlb_shm_group
27
shell> id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 文件里填的是指定大頁內存使用的用戶組 id,這里查看到是 MySQL 組 id,那既然是給 MySQL 的為什麼 free 等於 total,並且 mysql 還只有 20 多 G 實際使用內存呢?
原來在 MySQL 中還有專門啟用大內存頁的參數,在 MySQL 大內存頁稱為 large page。
查看 MySQL 配置文件
發現配置文件中確實有 large-page 配置,但出於禁用狀態。
後與業務確認,很早之前確實啟用過 mysql 的 large page,不過後面禁用了。排查到這基本就有了結論。
結論
這套環境之前開啟了 20000 的大內存頁,每頁大小為 2MB,佔用了 40G 內存空間,給 MySQL 使用,並且 MySQL 開啟了 large page,但後來不使用的時候,只關閉了 MySQL 端的 large page 參數,但沒有實際更改主機的關於大內存頁的配置,所以導致,實際上主機上的還存在 20000 的大內存頁,並且沒在使用,這一部分長期空閑,並且其他程序不能使用。
所以 MySQL 在使用 20G 內存左右,整個主機內存就飽和了,然後在部分條件下,就觸發了 OOM,導致 mysqld 被 kill,但主機上又有 mysqld_safe 守護程序,所以又再次給拉起來,就看到了文章初的偶爾連接不上的現象。
⑸ 關於伺服器內存佔用大的問題。
伺服器上不要裝太多的防護軟體,一般同一層面的防護軟體都是會起沖突的,有可能就是造成內存爆滿。
另外,伺服器上的防護軟體要用伺服器上專用的哦,像安全狗、護衛神之類的,不要裝火絨之類的電腦上的防護軟體,這類軟體和伺服器上常用軟體也可能器沖突,並且不一定能安裝得上去哦
⑹ 伺服器內存無故使用很高,查不到是哪個進程佔用的
最簡單的辦法,關機,拔掉內存,重新插上OK
⑺ Windows Server2008 R2伺服器 內存佔用高,但找不到是哪
這個確實不好查,我遇到過一個問題,內存一直再漲,tomcat的,漲到100就死機了,重啟就好了,我覺得是內存溢出了。也沒解決成,你用ProcessExplorer這個工具查看下吧,這個比較細。
⑻ 如何查看linux伺服器內存佔用情況
通你的描述,這里以我正在使用的centos 7.2 版本的系統為例, 可以通過如下命令來進行查看:
[root@Backup2 data]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@Backup2 data]#
[root@Backup2 data]#free -g
或者
[root@Backup2 data]# free -m
通過上述命令就可以進行查看了,希望能幫到你。。。。。。
⑼ 伺服器內存老是滿,CPU有滿,這是怎麼回事有沒有知道的
內存配置太低,可以換個內存空間大的。
⑽ linux伺服器內存所剩不多了,怎麼查原因上周五12點以後內存使用突然上升的
top命令看下伺服器硬體使用情況,也可以看到軟體程序佔用情況。