久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Redis持久化過程的監(jiān)控及優(yōu)化

      Redis持久化過程一直是影響redis性能的常見因素,如何監(jiān)控持久化以及如何優(yōu)化持久化過程呢?下面我們就一起來看看吧。

      fork的監(jiān)控及優(yōu)化

      不管是使用哪種持久化,RDB持久化或AOF重寫,主進(jìn)程都會(huì)fork出一個(gè)子進(jìn)程,在子進(jìn)程里完成rdb文件的生成或aof的重寫。fork操作對于操作系統(tǒng)來說屬于比較重的操作。fork階段,redis會(huì)阻塞一段時(shí)間。阻塞時(shí)間和redis數(shù)據(jù)占用的內(nèi)存大小成正比關(guān)系,每1G內(nèi)存fork耗時(shí)在20毫秒。

      如想知道fork階段的阻塞時(shí)間,可以使用info stats命令,查看latest_fork_usec選項(xiàng)的值,單位是微秒。記住是微秒,不是毫秒。

      # redis-cli info stats | grep latest latest_fork_usec:323

      優(yōu)化fork的方法:

      • 控制redis占用的內(nèi)存大小。若占用內(nèi)存過大的話,可以將應(yīng)用拆分開,在多個(gè)服務(wù)器上部署,分?jǐn)俽edis的內(nèi)存占用。

      • 適當(dāng)降低fork的操作頻率。

      內(nèi)存的監(jiān)控

      RDB持久化的日志如下:

      …… 21692:C 15 May 2020 14:17:06.935 * DB saved on disk 21692:C 15 May 2020 14:17:06.936 * RDB: 2 MB of memory used by copy-on-write ……

      可以看到RDB持久化過程消耗了2M內(nèi)存。

      AOF持久化日志如下:

      …… 15786:C 23 May 2020 07:39:59.145 * AOF rewrite: 2MB of memory used by copy-on-write 10679:M 23 May 2020 07:39:59.201 * Background AOF rewrite terminated with success 10679:M 23 May 2020 07:39:59.201 * Residual parent diff successfully flushed to the rewritten AOF (0.02 MB) 10679:M 23 May 2020 07:39:59.201 * Background AOF rewrite finished successfully

      可以看到,aof重寫占用的內(nèi)存為2MB+0.02MB=2.02MB

      如想監(jiān)控持久化過程中內(nèi)存占用情況,可以編寫shell腳本,統(tǒng)計(jì)出redis日志里相關(guān)信息。

      硬盤的監(jiān)控

      Redis持久化過程會(huì)對硬盤造成壓力,因?yàn)槌志没?,?nèi)存的數(shù)據(jù)會(huì)保存到硬盤中。

      linux系統(tǒng)監(jiān)控硬盤的命令有sar、iostat等,如發(fā)現(xiàn)硬盤io壓力超過閥值,再根據(jù)redis的日志對比下持久化的時(shí)間,看看是不是由于redis持久化造成的壓力。

      優(yōu)化方法這里提兩點(diǎn):

      • 使用性能好的磁盤,機(jī)械硬盤肯定比不了固態(tài)硬盤。

      • 如果是單機(jī)上配置了好幾個(gè)redis實(shí)例,可以分別寫入不同的磁盤里,減輕磁盤的寫入壓力。

      單機(jī)多實(shí)例部署

      因?yàn)閞edis是單線程架構(gòu),如果一個(gè)服務(wù)器上只部署一個(gè)redis實(shí)例,那么對于多核cpu來說是一種浪費(fèi)。所以,通常會(huì)在一個(gè)服務(wù)器上部署多個(gè)redis應(yīng)用,比如開啟三個(gè)redis服務(wù),端口號分別為6379,6380,6381。6379用來做緩存服務(wù),6380用來做消息隊(duì)列,6381用來做標(biāo)簽及推薦系統(tǒng)。

      這樣確實(shí)可以充分利用cpu,但會(huì)容易產(chǎn)生問題。如果多個(gè)實(shí)例同時(shí)在進(jìn)行持久化,那么對于cpu、內(nèi)存及影片的壓力是非常大的。好的做法是將他們隔離開來,同一時(shí)間只有一個(gè)實(shí)例在進(jìn)行持久化。

      實(shí)現(xiàn)該效果的偽代碼如下:

      while (true) {      $redisObj = [6379,6380,……];            foreach ($redisObj as $obj) {           // 該實(shí)例是否構(gòu)成重寫的要求           if (rewriteConf($ojb)) {            // 該實(shí)例進(jìn)行持久化           }      } }

      foreach用來遍歷每一個(gè)redis實(shí)例,然后對該實(shí)例是否達(dá)到重寫的條件做判斷,滿足就開始進(jìn)行重寫。這樣就可以將多redis實(shí)例持久化進(jìn)行隔離。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號