最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux Swap空間利用率過高問題

 更新時(shí)間:2023年04月06日 10:01:35   作者:人工智  
這篇文章主要介紹了Linux Swap空間利用率過高問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在單獨(dú)部署的mysql數(shù)據(jù)庫服務(wù)器中發(fā)現(xiàn),在高并發(fā)的情況下發(fā)現(xiàn)內(nèi)存不夠用,進(jìn)一步發(fā)現(xiàn)swap的利用率很高。

公司的DBA提了兩點(diǎn)建議:

  • 1、建議先減小數(shù)據(jù)庫緩沖池(buffer pool)的大?。?/li>
  • 2、進(jìn)行數(shù)據(jù)庫內(nèi)存擴(kuò)容

1、首先,不是內(nèi)存不夠用嗎?swap利用率為什么高呢?swap是什么呢?

什么是swap?

swap space是磁盤上的一塊區(qū)域,可以是一個(gè)分區(qū),也可以是一個(gè)文件,或者是他們的組合。

簡單點(diǎn)說,當(dāng)系統(tǒng)物理內(nèi)存吃緊時(shí),Linux會(huì)將內(nèi)存中不常訪問的數(shù)據(jù)保存到swap上,這樣系統(tǒng)就有更多的物理內(nèi)存為各個(gè)進(jìn)程服務(wù),而當(dāng)系統(tǒng)需要訪問swap上存儲(chǔ)的內(nèi)容時(shí),再將swap上的數(shù)據(jù)加載到內(nèi)存中,這就是我們常說的swap out和swap in。

為什么需要swap?

要回答這個(gè)問題,就需要回答swap給我們帶來了哪些好處。

對(duì)于一些大型的應(yīng)用程序(如LibreOffice、video editor等),在啟動(dòng)的過程中會(huì)使用大量的內(nèi)存,但這些內(nèi)存很多時(shí)候只是在啟動(dòng)的時(shí)候用一下,后面的運(yùn)行過程中很少再用到這些內(nèi)存。有了swap后,系統(tǒng)就可以將這部分不這么使用的內(nèi)存數(shù)據(jù)保存到swap上去,從而釋放出更多的物理內(nèi)存供系統(tǒng)使。

很多發(fā)行版(如ubuntu)的休眠功能依賴于swap分區(qū),當(dāng)系統(tǒng)休眠的時(shí)候,會(huì)將內(nèi)存中的數(shù)據(jù)保存到swap分區(qū)上,等下次系統(tǒng)啟動(dòng)的時(shí)候,再將數(shù)據(jù)加載到內(nèi)存中,這樣可以加快系統(tǒng)的啟動(dòng)速度,所以如果要使用休眠的功能,必須要配置swap分區(qū),并且大小一定要大于等于物理內(nèi)存。

在某些情況下,物理內(nèi)存有限,但又想運(yùn)行耗內(nèi)存的程序怎么辦?這時(shí)可以通過配置足夠的swap空間來達(dá)到目標(biāo),雖然慢一點(diǎn),但至少可以運(yùn)行。

雖然大部分情況下,物理內(nèi)存都是夠用的,但是總有一些意想不到的狀況,比如某個(gè)進(jìn)程需要的內(nèi)存超過了預(yù)期,或者有進(jìn)程存在內(nèi)存泄漏等,當(dāng)內(nèi)存不夠的時(shí)候,就會(huì)觸發(fā)內(nèi)核的OOM killer,根據(jù)OOM killer的配置,某些進(jìn)程會(huì)被kill掉或者系統(tǒng)直接重啟(默認(rèn)情況是優(yōu)先kill耗內(nèi)存最多的那個(gè)進(jìn)程),不過有了swap后,可以拿swap當(dāng)內(nèi)存用,雖然速度慢了點(diǎn),但至少給了我們一個(gè)去debug、kill進(jìn)程或者保存當(dāng)前工作進(jìn)度的機(jī)會(huì)。

如果看過Linux內(nèi)存管理,就會(huì)知道系統(tǒng)會(huì)盡可能多的將空閑內(nèi)存用于cache,以加快系統(tǒng)的I/O速度,所以如果能將不怎么常用的內(nèi)存數(shù)據(jù)移動(dòng)到swap上,就會(huì)有更多的物理內(nèi)存用于cache,從而提高系統(tǒng)整體性能。

swap的缺點(diǎn)?

上面介紹了swap的優(yōu)點(diǎn),那swap的缺點(diǎn)呢?swap是存放在磁盤上的,磁盤的速度和內(nèi)存比較起來慢了好幾個(gè)數(shù)量級(jí),如果不停的讀寫swap,那么對(duì)系統(tǒng)的性能肯定有影響,尤其是當(dāng)系統(tǒng)內(nèi)存很吃緊的時(shí)候,讀寫swap空間發(fā)生的頻率會(huì)很高,導(dǎo)致系統(tǒng)運(yùn)行很慢,像死了一樣,這個(gè)時(shí)候添加物理內(nèi)存是唯一的解決辦法。

由于系統(tǒng)會(huì)自動(dòng)將不常用的內(nèi)存數(shù)據(jù)移到swap上,對(duì)桌面程序來說,有可能會(huì)導(dǎo)致最小化一個(gè)程序后,再打開時(shí)小卡一下,因?yàn)樾枰獙wap上的數(shù)據(jù)重新加載到內(nèi)存中來。

到底要不要swap?

上面介紹了什么是swap以及它們的優(yōu)缺點(diǎn),那么到底要不要配置swap呢?答案是:看情況。

下面分別討論內(nèi)存不夠用、內(nèi)存勉強(qiáng)夠用和內(nèi)存很充裕這三種情況下服務(wù)器和桌面環(huán)境對(duì)swap的選擇。

內(nèi)存不夠用

不管是桌面還是服務(wù)器,當(dāng)物理內(nèi)存明顯不夠用,而又想跑程序的話,添加swap是唯一的選擇,慢點(diǎn)總比不能工作強(qiáng)。

內(nèi)存勉強(qiáng)夠用

建議配置swap,這樣內(nèi)核會(huì)將不常用的數(shù)據(jù)從內(nèi)存移到swap上,從而有更多的物理內(nèi)存供系統(tǒng)調(diào)用,提升系統(tǒng)性能,同時(shí)也避免因偶爾的物理內(nèi)存不夠造成進(jìn)程異常退出,提升系統(tǒng)穩(wěn)定性,但對(duì)服務(wù)器來說,一定要限制或者監(jiān)控swap空間的使用情況,當(dāng)出現(xiàn)swap空間使用超預(yù)期或者swap in/out頻繁時(shí),要及時(shí)采取措施,不然對(duì)性能影響很大

內(nèi)存充裕

理論上來說,如果物理內(nèi)存足夠多并且不需要休眠功能,那swap就沒什么用,可關(guān)鍵問題是我們很難保證物理內(nèi)存在任何情況下都?jí)蛴?,因?yàn)榭傆幸庀氩坏降那闆r發(fā)生,比如某些進(jìn)程耗內(nèi)存超預(yù)期,服務(wù)器壓力超預(yù)期,內(nèi)存泄漏等。

目前,我們是明顯內(nèi)存不夠用了,是什么導(dǎo)致內(nèi)存不夠用了呢?為什么mysql會(huì)直接導(dǎo)致服務(wù)器內(nèi)存不夠了

那我們的mysql的服務(wù)器為什么會(huì)發(fā)生swap呢?

假設(shè)我們的物理內(nèi)存是16G,swap是4G。如果MySQL本身已經(jīng)占用了12G物理內(nèi)存, 而同時(shí)其他程序或者系統(tǒng)模塊又需要6G內(nèi)存,這時(shí)候操作系統(tǒng)就可能把MySQL所擁有的一部分地址空間映射到swap上去。

說白了,就是系統(tǒng)認(rèn)為你mysql占用的空間太大了,不允許你搞特殊,必須騰出空間讓那個(gè)我的其它必要的進(jìn)程區(qū)使用內(nèi)存,所以你就去比較慢的swap去玩吧!

而mysql中占內(nèi)存最大的就是innodb_buffer_pool_size了,所以第一時(shí)間應(yīng)考慮到這個(gè)值是不是設(shè)置的不合理?

MySQL的內(nèi)存消耗分為:

  • 1.會(huì)話級(jí)別的內(nèi)存消耗:如sort_buffer_size等,每個(gè)會(huì)話都會(huì)開辟一個(gè)sort_buffer_size來進(jìn)行排序操作
  • 2.全局的內(nèi)存消耗:例如:innodb_buffer_pool_size等,全局共享的內(nèi)存段

這也是我覺得我們DBA不專業(yè)的地方,并沒有考慮第一種情況,去查看回話級(jí)別的內(nèi)存消耗情況,而是直接跟我說要調(diào)小innodb_buffer_pool_size

InnoDB的緩沖池緩存什么?有什么用?設(shè)置多大合適呢?

緩存表數(shù)據(jù)與索引數(shù)據(jù),把磁盤上的數(shù)據(jù)加載到緩沖池,避免每次訪問都進(jìn)行磁盤IO,起到加速訪問的作用。

給 Buffer Pool 分配越大的內(nèi)存,MySQL 的并發(fā)性能就越好。那是不是都應(yīng)該將百分之九十九的機(jī)器的內(nèi)存都分配給 Buffe Pool 呢?

當(dāng)然不是!先不說操作系統(tǒng)內(nèi)核也需要幾個(gè)G內(nèi)存,MySQL 除了 Buffer Pool 還有很多別的內(nèi)存數(shù)據(jù)結(jié)構(gòu)呢,這些都是需要內(nèi)存的,所以說,上面的想法是絕對(duì)不行的!

比較合理的比例,應(yīng)該是 Buffer Pool 的內(nèi)存大小占機(jī)器總內(nèi)存的 50% ~ 60%。

可以通過show engine innodb status\G; 查看命中情況. 當(dāng)命中沒達(dá)到97%以上,都可以考慮加內(nèi)存,當(dāng)然這個(gè)和業(yè)務(wù)也有關(guān)例如對(duì)一個(gè)master的寫入量大,讀少就是特例.

其它情況如果沒達(dá)到97%以上,對(duì)于讀取多的情況,如果沒達(dá)到98%以上,都說明buffer不夠.可以擴(kuò). 再從另一方面來講如果給分了20%的內(nèi)存命中都能達(dá)到100%了,而且還有大量的free page那說明,那就夠用了,另外也可以跟據(jù)free page去算一下可以再減少點(diǎn)內(nèi)存. 把那些內(nèi)存用到別用呢

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • LNMP系列教程之 解決sendmail不能發(fā)送郵件問題

    LNMP系列教程之 解決sendmail不能發(fā)送郵件問題

    客戶需要驗(yàn)證郵件注冊(cè)用戶我發(fā)現(xiàn)郵件發(fā)送不了。一般的主機(jī)我用過,直接在dz后臺(tái)開啟就可以實(shí)現(xiàn)。查閱相關(guān)資料應(yīng)該是sendmail不能發(fā)送郵件導(dǎo)致的。那我們?nèi)绾谓鉀Q呢
    2012-09-09
  • linux 下配置LAMP環(huán)境

    linux 下配置LAMP環(huán)境

    本文給大家介紹的是如何在linux 下配置LAMP環(huán)境,學(xué)習(xí)PHP腳本編程語言之前,必須先搭建并熟悉開發(fā)環(huán)境,開發(fā)環(huán)境有很多種,例如LAMP、WAMP、MAMP等。這里我介紹一下LAMP環(huán)境的搭建,即Linux、Apache、MySQL、PHP環(huán)境。
    2015-03-03
  • Linux編程之PING實(shí)現(xiàn)

    Linux編程之PING實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Linux編程之PING實(shí)現(xiàn)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Linux系統(tǒng)利用cp命令實(shí)現(xiàn)強(qiáng)制覆蓋功能的方法

    Linux系統(tǒng)利用cp命令實(shí)現(xiàn)強(qiáng)制覆蓋功能的方法

    cp命令是我日常學(xué)習(xí)中經(jīng)常會(huì)遇到的一個(gè)命令,下面這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)利用cp命令實(shí)現(xiàn)強(qiáng)制覆蓋功能的方法,并且給大家簡單的介紹了cp命令的基礎(chǔ)知識(shí),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Win10 安裝Linux ubuntu-18.04雙系統(tǒng)(安裝指南)

    Win10 安裝Linux ubuntu-18.04雙系統(tǒng)(安裝指南)

    這篇文章主要介紹了Win10+Linux ubuntu-18.04雙系統(tǒng)安裝教程,本文分步驟給大家記錄下來,需要的朋友可以參考下
    2019-10-10
  • Linux中搭建DNS域名解析服務(wù)器的詳細(xì)過程

    Linux中搭建DNS域名解析服務(wù)器的詳細(xì)過程

    在Linux中搭建DNS服務(wù)器涉及配置和運(yùn)行一個(gè)軟件來提供DNS服務(wù),DNS是互聯(lián)網(wǎng)上的一種系統(tǒng),它將域名轉(zhuǎn)換為對(duì)應(yīng)的IP地址,使得用戶可以通過易記的域名訪問網(wǎng)站,而不是記憶一長串?dāng)?shù)字,本文給大家詳細(xì)介紹了Linux中搭建DNS域名解析服務(wù)器,需要的朋友可以參考下
    2024-03-03
  • 詳解Ubuntu16.04下Hadoop 2.7.3的安裝與配置

    詳解Ubuntu16.04下Hadoop 2.7.3的安裝與配置

    本篇文章主要介紹了詳解Ubuntu16.04下Hadoop 2.7.3的安裝與配置,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Apache 支持CGI程序和SSI程序的設(shè)置方法

    Apache 支持CGI程序和SSI程序的設(shè)置方法

    在這里,網(wǎng)頁教學(xué)網(wǎng)和大家探討如何修改服務(wù)器選項(xiàng)讓服務(wù)器能提供簡單的動(dòng)態(tài)網(wǎng)頁內(nèi)容,也就是支持CGI程序及 Server-Side Include(SSI)程序。
    2009-10-10
  • Linux中find命令的用法入門

    Linux中find命令的用法入門

    Linux系統(tǒng)下的find 命令用于在目錄結(jié)構(gòu)中查找文件,同時(shí)還可以對(duì)查找結(jié)果進(jìn)行指定的操作。下面這篇文章主要介紹了Linux中find命令的用法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Linux下安裝Keepalived及原理分析

    Linux下安裝Keepalived及原理分析

    這篇文章主要介紹了在Linux環(huán)境下安裝Keepalived及原理分析,有興趣的朋友學(xué)習(xí)參考下吧。
    2017-12-12

最新評(píng)論

浮山县| 临漳县| 新巴尔虎右旗| 西乌珠穆沁旗| 阿尔山市| 南昌市| 隆子县| 龙胜| 衡南县| 信丰县| 靖安县| 扬中市| 奈曼旗| 惠州市| 新营市| 攀枝花市| 资中县| 曲沃县| 漠河县| 邵武市| 左贡县| 苏州市| 寿宁县| 松江区| 曲阜市| 田阳县| 益阳市| 敖汉旗| 南木林县| 辽宁省| 乐至县| 济源市| 土默特左旗| 青岛市| 高密市| 托克逊县| 大同县| 邛崃市| 乌兰察布市| 五台县| 九龙坡区|