亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > 管理維護 > 正文

SWAP的罪與罰

2024-09-10 14:19:05
字體:
來源:轉載
供稿:網友

說個案例:一臺Apache服務器,由于其MaxClients參數設置過大,并且恰好又碰到訪問量激增,結果內存被耗光,從而引發SWAP,進而負載攀升,最終導致宕機。

 

正所謂:SWAP,性能之大事,死生之地,存亡之道,不可不察也。

哪些工具可以監測SWAP

最容易想到的就是free命令了,它指明了當前SWAP的使用情況:

shell> free -m             total       used       freeSwap:        34175      11374      22801

另一個常用的是sar命令,它能列出系統在各個時間的SWAP使用情況:

shell> sar -rkbswpfree kbswpused  %swpused  kbswpcad 23345644  11650572     33.29   4656908 23346452  11649764     33.29   4656216 23346556  11649660     33.29   4650308 23346932  11649284     33.29   4649888 23346992  11649224     33.29   4648848

不過free命令和sar命令顯示的都不是實時數據,如果需要,可以使用vmstat命令:

shell> vmstat 1-----------memory------------- ---swap--  swpd   free   buff   cache     si   so11647532 123664 305064 7193168    0    011647532 123672 305064 7193172    0    011647532 125728 305064 7193468    0    011647532 125376 305064 7193476    0    011647532 124508 305068 7193624    0    0

每秒刷新一次結果,在SWAP一欄里列出了相關數據,至于si和so的解釋,大致如下:

  • si: Amount of memory swapped in from disk (/s).
  • so: Amount of memory swapped to disk (/s).

如果它們一直是零當然最好不過了,偶爾不為零也沒啥,糟糕的是一直不為零。

前面介紹的方法,看到的都是SWAP的整體情況,可是如果我想查看到底是哪些進程使用了SWAP,應該如何操作呢?這個問題有點棘手,我們來研究一下:

好消息是top命令能提供這個信息,不過缺省并沒有顯示,我們需要激活一下:

  1. 打開top;
  2. 按「f」進入選擇字段的界面;
  3. 按「p」選擇「SWAP」字段;
  4. 按回車確認。

壞消息是top命令提供的SWAP信息只是一個理論值,或者更直白一點兒來說它根本就是不可信的(在top里SWAP的計算公式是:SWAP=VIRT-RES)。

BTW:相比之下,top里的「nFLT」字段更有價值,它表示PageFault的次數。

那到底我們能不能獲取到進程的SWAP情況呢?別著急,看代碼:

#!/bin/bashcd /procfor pid in [0-9]*; do    command=$(cat /proc/$pid/cmdline)    swap=$(        awk '            BEGIN  { total = 0 }            /Swap/ { total += $2 }            END    { print total }        ' /proc/$pid/smaps    )    if (( $swap > 0 )); then        if [[ "${head}" != "yes" ]]; then            echo -e "PID/tSWAP/tCOMMAND"            head="yes"        fi        echo -e "${pid}/t${swap}/t${command}"    fidone

說明:請使用root權限來運行此腳本。

哪些因素可能影響SWAP

內存不足無疑會SWAP,但有些時候,即便看上去內存很充裕,還可能會SWAP,這種現象被稱為SWAP Insanity,罪魁禍首主要有以下幾點:

Swappiness的迷失

實際上,當可用內存不足時,系統有兩個選擇:一個是通過SWAP來釋放內存,另一個是刪除Cache中的Page來釋放內存。一個很常見的例子是:當拷貝大文件的時候,時常會發生SWAP現象。這是因為拷貝文件的時候,系統會把文件內容在Cache中按Page來緩存,此時一旦可用內存不足,系統便會傾向于通過SWAP來釋放內存。

內核中的swappiness參數可以用來控制這種行為,缺省情況下,swappiness的值是60:

shell> sysctl -a | grep swappinessvm.swappiness = 60

它的含義是:如果系統需要內存,有百分之六十的概率執行SWAP。知道了這一點,我們很自然的會想到用下面的方法來降低執行SWAP的概率:

shell> echo "vm.swappiness = 0" >> /etc/sysctl.confshell> sysctl -p

這樣做的確可以降低執行SWAP的概率,但并不意味著永遠不會執行SWAP。

NUMA的詛咒

NUMAMySQL社區有很多討論,這里不多說了,直擊NUMA和SWAP的恩怨糾葛。

大概了解一下NUMA最核心的numactl命令:

shell> numactl --hardwareavailable: 2 nodes (0-1)node 0 size: 16131 MBnode 0 free: 100 MBnode 1 size: 16160 MBnode 1 free: 10 MBnode distances:node   0   1  0:  10  20  1:  20  10

可以看到系統有兩個節點(其實就是兩個物理CPU),它們各自分了16G內存,其中零號節點還剩100M內存,一號節點還剩10M內存。設想啟動了一個需要11M內存的進程,系統把它分給了一號節點來執行,此時雖然系統總體的可用內存大于該進程需要的內存,但因為一號節點本身剩余的可用內存不足,所以仍然可能會觸發SWAP行為。

需要說明的一點事,numactl命令中看到的各節點剩余內存中時不包括Cache內存的,如果需要知道,我們可以利用drop_caches參數先釋放它:

shell> sysctl vm.drop_caches=1

注:這步操作可能會引起系統負載的震蕩。

另:如何確定一個進程的節點及內存分配情況?網絡上有現成的腳本。

如果要規避NUMA對SWAP的影響,最簡單的方法就是在啟動進程的時候禁用它:

shell> numactl --interleave=all ...

此外,內核參數zone_reclaim_mode通常也很重要,當某個節點可用內存不足時,如果為0的話,那么系統會傾向于從遠程節點分配內存;如果為1的話,那么系統會傾向于從本地節點回收Cache內存。多數時候,Cache對性能很重要,所以0是一個更好的選擇。

shell> echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.confshell> sysctl -p

另:網絡上有一些關于MySQL和SWAP的討論,對于理解SWAP有一定意義,推薦:

  • MySQL如何避免使用swap(一)
  • MySQL如何避免使用swap(二)
  • MySQL如何避免使用swap(三)

補:Memcached在啟動的時候如果帶上了k選項,就能避免使用SWAP,但要慎用。

早些年,YouTube曾經被SWAP問題困擾過,他們當時的解決方法很極端:刪除SWAP!不得不說這真是藝高人膽大,可惜對蕓蕓眾生的我們而言,這實在是太危險了,因為如此一來,一旦內存耗盡,由于沒有SWAP的緩沖,系統會立即開始OOM,結果可能會讓問題變得更加復雜,所以大家還是安分守己做個老實人吧。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产综合久久久久久蜜臀| 中国china体内裑精亚洲片| 日韩天堂在线视频| 亚洲欧美在线磁力| 欧美国产在线电影| 国产丝袜一区二区三区| 亚洲人成电影网站色www| 91精品国产免费久久久久久| 久久久精品日本| 国产精品日韩在线观看| 国产精品久久97| 欧美韩国理论所午夜片917电影| 亚洲第五色综合网| 亚洲a成v人在线观看| 国产午夜精品全部视频在线播放| 中文字幕综合在线| 日韩av不卡在线| 亚洲人精选亚洲人成在线| 成人福利视频在线观看| 亚洲欧美日韩网| 国产精品久久久久久久久久久不卡| 日韩福利视频在线观看| 精品一区二区三区电影| 97国产精品视频| 欧美国产高跟鞋裸体秀xxxhd| 亚洲xxxx3d| 91av中文字幕| 在线看日韩av| 欧美伊久线香蕉线新在线| 亚洲欧美日韩中文在线| 欧美激情一级二级| 亚洲第一综合天堂另类专| 亚州欧美日韩中文视频| 国产精品a久久久久久| 国产日韩中文字幕在线| 久久久久久国产| 色偷偷av亚洲男人的天堂| 日韩在线视频观看正片免费网站| 欧美精品videos性欧美| 国产精品三级美女白浆呻吟| 精品毛片三在线观看| 亚洲天堂开心观看| 欧美视频一二三| 5566成人精品视频免费| 亚洲毛片在线免费观看| 九九热精品在线| 亚洲午夜国产成人av电影男同| 久久男人的天堂| 欧美一级视频在线观看| 久久五月天色综合| 亚洲第一区中文字幕| 久久男人资源视频| 69久久夜色精品国产69| 亚洲最大中文字幕| 亚洲图片在区色| 国产精品久久久久不卡| 久久久久久久久久久成人| 成人天堂噜噜噜| 国内偷自视频区视频综合| 91国内精品久久| 日韩毛片中文字幕| 草民午夜欧美限制a级福利片| 国产精品免费小视频| 欧美日韩国产丝袜美女| 一个人www欧美| 黄色一区二区在线观看| 国模叶桐国产精品一区| 国产一区二区精品丝袜| 国产69精品久久久久9| 欧美激情一区二区三级高清视频| 亚洲黄页视频免费观看| 日韩va亚洲va欧洲va国产| 欧美在线性视频| 精品久久久精品| 日韩精品亚洲元码| 亚洲二区在线播放视频| 色先锋资源久久综合5566| 国产精品一香蕉国产线看观看| 久久国产精品久久久久久| 久久久亚洲国产| 久久精品国产亚洲7777| 国产在线拍偷自揄拍精品| 亚洲女人被黑人巨大进入| 91精品视频在线看| 2020久久国产精品| 亚洲在线观看视频| 欧美国产精品va在线观看| 国产亚洲精品激情久久| 日韩久久午夜影院| 欧美激情精品久久久久久大尺度| 欧美日韩亚洲精品一区二区三区| 欧美激情欧美狂野欧美精品| 91视频-88av| 伊人伊人伊人久久| 日韩成人激情视频| 欧美日韩中文在线| 成人黄色在线免费| 国产精品日韩欧美综合| 亚洲精品中文字幕av| 亚洲国产精品小视频| 国产成人精品在线观看| 欧美一级黑人aaaaaaa做受| 尤物精品国产第一福利三区| 亚洲精选一区二区| 日本一欧美一欧美一亚洲视频| 欧美日韩国产专区| 91精品国产高清久久久久久| 国产精品久久精品| 国产欧美精品日韩精品| 中文字幕视频在线免费欧美日韩综合在线看| 色综合久久久久久中文网| 中文字幕亚洲一区| 国产成人精品日本亚洲专区61| 一二美女精品欧洲| 亚洲午夜性刺激影院| 色综合久久久久久中文网| 日韩精品免费一线在线观看| 国产精品视频区1| 亚洲最新中文字幕| 国产精品爱久久久久久久| 国产精品福利久久久| 欧美性生交大片免费| 国产一区二区三区高清在线观看| 日本久久久久久久久久久| 久久精品亚洲热| 亚洲精品福利视频| 日韩高清电影免费观看完整版| 久久精品国产欧美亚洲人人爽| 91午夜在线播放| 久久亚洲春色中文字幕| 亚洲免费视频一区二区| 久久夜色精品国产亚洲aⅴ| 国内精品久久久久影院 日本资源| 欧美俄罗斯乱妇| 国产精品jizz在线观看麻豆| 色综合色综合网色综合| 亚洲国产精品福利| 亚洲夜晚福利在线观看| 一二美女精品欧洲| 秋霞av国产精品一区| 91久久嫩草影院一区二区| 国产一区二区欧美日韩| 91视频88av| 国产精品福利无圣光在线一区| 国产欧美精品在线播放| 欧美成年人视频网站欧美| 日本一区二区三区四区视频| 色av中文字幕一区| 在线色欧美三级视频| 精品国产一区二区三区久久狼黑人| 国产啪精品视频网站| 日韩av免费在线| 国产精品久久999| 亚洲一区二区久久久| 一区二区在线免费视频| 日韩欧美精品中文字幕| 久久精品国产99国产精品澳门| 欧美三级欧美成人高清www| 欧美诱惑福利视频| 亚洲精品久久久久久久久久久久久| 久久成人精品一区二区三区| 亚洲电影免费观看高清完整版在线观看| 欧美高清视频免费观看| 国产欧美一区二区三区久久人妖|