日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

執行free -m 命令查看可用內存,發現cached占比過高,free可用內存過少。

 

Linux內存不足優化

 

 

linux手動釋放緩存的方法

Linux釋放內存的命令:

sync

echo 1 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之間的數字,代表不同的含義:

0:不釋放(系統默認值)

1:釋放頁緩存

2:釋放dentries和inodes

3:釋放所有緩存

釋放完內存后改回去讓系統重新自動分配內存。

echo 0 >/proc/sys/vm/drop_caches

free -m #看內存是否已經釋放掉了。

如果我們需要釋放所有緩存,就輸入下面的命令:

echo 3 > /proc/sys/vm/drop_caches

繼續繼續跟蹤:監聽JVM使用情況,找出原因,進行優化

centos/Linux服務器的內存不夠解決方法

使用虛擬內存擴展內存

1.打開終端,切換到root用戶,輸入:free -m查看內存狀態

[maker@centos ~]$ free -m

total used free shared buff/cache available

Mem: 992 189 79 13 722 614

Swap: 0 0 0

Swap也就是虛擬內存為0

2.選擇一個較大的分區,建立分區文件

[root@centos ~]# dd if=/dev/zero of=/opt/swap bs=1024 count=1024000

1024000+0 records in

1024000+0 records out

1048576000 bytes (1.0 GB) copied, 16.6877 s, 62.8 MB/s

該命令表示在opt分區建立名為swap,大小為1G的虛擬內存文件

3.將swap文件設置為swap分區文件

chmod 600 /opt/swap //注意更改swap文件的權限

[root@centos ~]# mkswap /opt/swap

Setting up swapspace version 1, size = 1023996 KiB

no label, UUID=fc47f29e-31af-401e-856d-0fec5262179e

4.激活swap,啟用分區交換文件

swapon /opt/swap

5.現在看下結果

[root@centos ~]# free -m

total used free shared buff/cache available

Mem: 992 191 63 13 737 625

Swap: 999 0 999

1.首先停止swap分區

[root@centos ~]# swapoff /opt/swap

[root@centos ~]# free -m

total used free shared buff/cache available

Mem: 992 191 63 13 738 626

Swap: 0 0 0

2.其次刪除掉swap文件即可

首先看一下磁盤大小

[root@centos ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 40G 3.9G 34G 11% /

devtmpfs 487M 0 487M 0% /dev

tmpfs 497M 4.0K 497M 1% /dev/shm

tmpfs 497M 420K 496M 1% /run

tmpfs 497M 0 497M 0% /sys/fs/cgroup

tmpfs 100M 0 100M 0% /run/user/0

tmpfs 100M 0 100M 0% /run/user/1001

[root@centos ~]# rm -rf /opt/swap

[root@centos ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 40G 3.0G 35G 8% /

devtmpfs 487M 0 487M 0% /dev

tmpfs 497M 4.0K 497M 1% /dev/shm

tmpfs 497M 420K 496M 1% /run

tmpfs 497M 0 497M 0% /sys/fs/cgroup

tmpfs 100M 0 100M 0% /run/user/0

tmpfs 100M 0 100M 0% /run/user/1001

可以看出刪除后多了1G的空間。

######### Linux釋放內存的相關知識 ###############

在Linux系統下,我們一般不需要去釋放內存,因為系統已經將內存管理的很好。但是凡事也有例外,有的時候內存會被緩存占用掉,導致系統使用SWAP空 間影響性能,例如當你在linux下頻繁存取文件后,物理內存會很快被用光,當程序結束后,內存不會被正常釋放,而是一直作為caching。,此時就需 要執行釋放內存(清理緩存)的操作了。

Linux系統的緩存機制是相當先進的,他會針對dentry(用于VFS,加速文件路徑名到inode的轉換)、Buffer Cache(針對磁盤塊的讀寫)和Page Cache(針對文件inode的讀寫)進行緩存操作。但是在進行了大量文件操作之后,緩存會把內存資源基本用光。但實際上我們文件操作已經完成,這部分 緩存已經用不到了。這個時候,我們難道只能眼睜睜的看著緩存把內存空間占據掉嗎?所以,我們還是有必要來手動進行Linux下釋放內存的操作,其實也就是 釋放緩存的操作了。/proc是一個虛擬文件系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段.也就是說可以通過修改 /proc中的文件,來對當前kernel的行為做出調整.那么我們可以通過調整/proc/sys/vm/drop_caches來釋放內存。要達到釋 放緩存的目的,我們首先需要了解下關鍵的配置文件/proc/sys/vm/drop_caches。這個文件中記錄了緩存釋放的參數,默認值為0,也就 是不釋放緩存。

一般復制了文件后,可用內存會變少,都被cached占用了,這是linux為了提高文件讀取效率的做法:為了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。"

釋放內存前先使用sync命令做同步,以確保文件系統的完整性,將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。否則在釋放緩存的過程中,可能會丟失未保存的文件。

[root@centos ~]# free -m

total used free shared buffers cached

Mem: 7979 7897 82 0 30 3918

-/ buffers/cache: 3948 4031

Swap: 4996 438 4558

第一行用全局角度描述系統使用的內存狀況:

total 內存總數

used 已經使用的內存數,一般情況這個值會比較大,因為這個值包括了cache 應用程序使用的內存

free 空閑的內存數

shared 多個進程共享的內存總額

buffers 緩存,主要用于目錄方面,inode值等(ls大目錄可看到這個值增加)

cached 緩存,用于已打開的文件

第二行描述應用程序的內存使用:

-buffers/cache 的內存數:used - buffers - cached

buffers/cache 的內存數:free buffers cached

前個值表示-buffers/cache 應用程序使用的內存大小,used減去緩存值

后個值表示 buffers/cache 所有可供應用程序使用的內存大小,free加上緩存值

第三行表示swap的使用:

used 已使用

free 未使用

可用的內存=free memory buffers cached。

為什么free這么小,是否關閉應用后內存沒有釋放?

但實際上,我們都知道這是因為Linux對內存的管理與windows不同,free小并不是說內存不夠用了,應該看的是free的第二行最后一個值:-/ buffers/cache: 3948 4031 ,這才是系統可用的內存大小。

實際項目中的經驗告訴我們,如果因為是應用有像內存泄露、溢出的問題,從swap的使用情況是可以比較快速可以判斷的,但free上面反而比較難查看。我覺得既然核心是可以快速清空buffer或cache,但核心并沒有這樣做(默認值是0),我們不應該隨便去改變它。

一般情況下,應用在系統上穩定運行了,free值也會保持在一個穩定值的,雖然看上去可能比較小。當發生內存不足、應用獲取不到可用內存、OOM錯 誤等問題時,還是更應該去分析應用方面的原因,如用戶量太大導致內存不足、發生應用內存溢出等情況,否則,清空buffer,強制騰出free的大小,可 能只是把問題給暫時屏蔽了,所以說一般情況下linux都不用經常手動釋放內存。

1、cached主要負責緩存文件使用, 日志文件過大造成cached區內存增大把內存占用完 .

Free中的buffer和cache:(它們都是占用內存):

buffer : 作為buffer cache的內存,是塊設備的讀寫緩沖區

cache: 作為page cache的內存, 文件系統的cache

如果 cache 的值很大,說明cache住的文件數很多。

Linux內存管理做了很多精心的設計,除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換),還采取了兩種主要Cache方式:Buffer Cache和Page

Cache,目的就是為了提升磁盤IO的性能。從低速的塊設備上讀取數據會暫時保存在內存中,即使數據在當時已經不再需要了,但在應用程序下一次訪問該數據時,它可以從內存中直接讀取,從而繞開低速的塊設備,從而提高系統的整體性能。而Linux會充分利用這些空閑的內存,設計思想是內存空閑還不如拿來多緩存一些數據,等下次程序再次訪問這些數據速度就快了,而如果程序要使用內存而系統中內存又不足時,這時不是使用交換分區,而是快速回收部分緩存,將它們留給用戶程序使用。

因此,可以看出,buffers/cached真是百益而無一害,真正的壞處可能讓用戶產生一種錯覺——Linux耗內存!其實不然,Linux并沒有吃掉你的內存,只要還未使用到交換分區,你的內存所剩無幾時,你應該感到慶幸,因為Linux緩存了大量的數據

2、手動釋放cached

To free pagecache: echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches

當你在Linux下頻繁存取文件后,物理內存會很快被用光,當程序結束后,內存不會被正常釋放,而是一直作為caching.這個問題,貌似有不少人在問,不過都沒有看到有什么很好解決的辦法.那么我來談談這個問題.

先來說說free命令

[root@centos ~]# free -m

total used free shared buffers cached

Mem: 249 163 86 0 10 94

-/+ buffers/cache: 58 191

Swap: 511 0 511

其中:

total 內存總數

used 已經使用的內存數

free 空閑的內存數

shared 多個進程共享的內存總額

buffers Buffer Cache和cached Page Cache 磁盤緩存的大小

-buffers/cache 的內存數:used - buffers - cached

+buffers/cache 的內存數:free + buffers + cached

可用的memory=free memory+buffers+cached

有了這個基礎后,可以得知,我現在used為163MB,free為86,buffer和cached分別為10,94

那么我們來看看,如果我執行復制文件,內存會發生什么變化.

[root@centos ~]# cp -r /etc ~/test/

[root@centos ~]# free -m

total used free shared buffers cached

Mem: 250 245 5 0 10 169

-/+ buffers/cache: 62 187

Swap: 511 0 511

在命令執行結束后,used為245MB,free為5MB,buffers為10MB,cached為169MB,都被cached吃掉了.別緊張,這是為了提高文件讀取效率的做法.

引用http://www.wujianrong.com/archives/2007/09/linux_free.html“為了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。”

那么有人說過段時間,linux會自動釋放掉所用的內存,我們使用free再來試試,

[root@centos test]# free -m

total used free shared buffers cached

Mem: 250 245 5 0 10 169

-/+ buffers/cache: 61 188

Swap: 511 0 511

MS沒有任何變化,那么我能否手動釋放掉這些內存呢?回答是可以的!

/proc是一個虛擬文件系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段.也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整.那么我們可以通過調整/proc/sys/vm/drop_caches來釋放內存.操作如下:

[root@centos test]# cat /proc/sys/vm/drop_caches

0

首先,/proc/sys/vm/drop_caches的值,默認為0

[root@centos test]# sync

手動執行sync命令(描述:sync 命令運行 sync 子例程。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)

[root@centos test]# echo 3 > /proc/sys/vm/drop_caches

[root@centos test]# cat /proc/sys/vm/drop_caches

3

將/proc/sys/vm/drop_caches值設為3

再來運行free命令,發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那么有效的釋放了buffer和cache.

有關/proc/sys/vm/drop_caches的用法在下面進行了說明

/proc/sys/vm/drop_caches (since Linux 2.6.17 Writing to this file causes the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free. To free pagecache,

use echo 1 > /proc/sys/vm/drop_caches; to free dentries and inodes,

use echo 2 > /proc/sys/vm/drop_caches; to free pagecache, dentries and inodes,

use echo 3 > /proc/sys/vm/drop_caches. Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync(8) first

 

Linux內存不足優化

運維不僅是救火和應急,更是持續保障、一份責任、一份用心,用心做好運維。

 


 

IT運維之眼-“諸葛運帷” 業務級運維監控管理平臺,企業端到移動端的運維監控整體解決方案。系統以業務系統監控為主線,基于“業務、軟件、網絡、設備、動環”多個監控視角的運維體系架構,打造了一個多維度可視化的綜合運維監控管理平臺。系統以故障提前預警、問題快速定位為核心。切實保障信息系統的安全穩定運行。

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定