成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解決Redis持久化之大數據服務暫停問題

數據庫 Redis
我們今天要提到的是Redis持久化中關于大數據服務暫停問題。Redis持久化是有兩種方式:RDB和AOF,RDB就是快照存儲,比如“每1個小時對redis進行快照存儲”。

  Redis持久化是有兩種方式:RDB和AOF

  對這兩種方式的官方文檔的翻譯請看:

  http://latteye.com/2011/11/redis-persistence.html

  RDB就是快照存儲,比如“每1個小時對redis進行快照存儲”。那么,

  save這個參數就應該設置save 3600 1000 //前一次快照3600秒后,當有超過1000個key被改動的時候就進行一次快照更新RDB快照產生dump.rdb文件,當每到快照時間,更新文件。

  AOF是存儲所有的寫操作,分兩個步驟:fsync和rewritefsync是把內存中的寫操作寫入aof文件中rewrite是將寫操作合并,比如set aa 1; set aa 2; 兩個操作應該寫成一個操作set aa 2;

  如果數據量小的話,啥問題也沒有

  現在假設服務器是20G內存,而且服務器上僅僅只有跑redis一個占內存的進程,就是說redis最多可以跑20G物理內存現在壓入13G的redis數據(可以使用phpredis循環壓入,但是要注意設置php的運行內存大小,最好使用pipeline的方式,否則php出現內存不足的error)

  嘗試1,我們只使用RDB的方式當進行快照的時候(測試時候可以把快照間隔時間定成30秒或更短)top查看進程

  26376 test 16 0 13.5g 13g 7488 D 0.0 42.8 6:48.24 redis-server

  32459 test 18 0 13.5g 13g 7200 D 1.3 42.8 0:23.22 redis-server

  看到有兩個進程,同時在運行,并且占用同樣大小的內存數,和起來竟然占用26G之大~!

  現在redis服務端上兩個進程都運行,看看客戶端:測試redis-cli set操作:

  redis 10.1.0.108:6379> set test2 22

  耗時(40.47s)近1分鐘

  就是說在大數據量的時候,做RDB,redis服務會暫停近1分鐘!這個就是redis持久化的時候的服務暫停現象。

  好吧,為了保證數據容錯性,我們的快照一般是要頻繁快照的,所以暫停一分鐘是不可容忍的。

  現在嘗試使用AOF+RDB

  1 將RDB的快照時間設置為1天(由于加上了AOF,所以這個時間是合理的)。

  2 1次性壓入1000w左右的string數據到redis中(大概有5G數據量)

  3 查看性能表現:

  第一個步驟fsync:

  redis會從內存中逐漸生成appendonly.aof 在這個過程我試了下set和get操作都是沒有暫停現象的(很好~!)

  好了,現在appendonly.aof生成了,有5.7個G

  -rw-r--r-- 1 root root 4186238374 Mar 6 15:50 appendonly.aof

  第二個步驟:調用BGREWRITEAOF重寫aof文件

  這個時候top查看:

  看到也是兩個redis-server服務開著。說明rewrite的時候是fork一個子進程在rewrite的,主進程是進行著redis服務的。

  這個時候redis-cli調用檢查

  get操作:無延時

  set操作:出現了延遲現象 !!

  這個說明AOF在重寫的時候會占用服務器的大量CPU和內存資源,導致服務出現短暫暫停現象!但是為什么get操作沒有出現延遲現象呢?參考官網文章,看到一個配置項:no-appendfsync-on-rewrite

  這個配置項是設置在rewrite的時候是否對新的寫操作進行fsync。no表示進行fsync,yes表示不進行

  默認是設置為no

  現在將這個配置項設置為yes(我們對于rewrite的aof文件硬盤大小沒有很大要求)

  重新進行測試:

  對同樣的5.7G的AOF操作進行一次BGREWRITEAOF。

  get操作:無延遲

  set操作:無延遲

  很好!說明在rewrite的時候如果不進行fsync操作,主進程和子進程是互不干擾的。

  那么如果rewrite的時候對新的寫操作不進行fsync,那么新的aof文件里面是否會丟失這個寫操作呢?

  答案是不會的,redis會將新的寫操作放在內存中,等待rewrite操作完成的時候,將新操作直接掛在aof中。

  好了,至此,這個問題應該已經可以過去了。

  推薦幾個文章:

  對數據持久化的一些想法:http://www.yiihsia.com/2011/04/%E5%AF%B9redis%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E6%83%B3%E6%B3%95/

  (這個文章提供了一個非常好的方法,當數據量大,內存足夠的情況,一臺機子上盡量多開幾個redis,甚至可以考慮有幾個cpu就開幾個redis,這樣,每個redis的內存量不會太大,就不會有大數據量服務暫停問題,這個也是考慮到了redis是單線程的,能盡量利用CPU)

  redis的內存陷阱:http://www.iteye.com/topic/808293

  (這個文章很好解釋了問什么大數據量的時候會出現服務暫停)

  Copy on write does not seem to work.: http://code.google.com/p/redis/issues/detail?id=150

  出處:http://www.cnblogs.com/yjf512/

  本文版權歸yjf512和cnBlog共有,歡迎轉載,但未經作者同意必須保留此段聲明

【編輯推薦】

  1. 當大數據遇到敏捷,會發生什么
  2. SQL Server引入Hadoop大數據處理能力
  3. 大數據來臨 如何為數據安全保駕護航?
  4. 大數據下的數據分析平臺架構
  5. 大數據時代已來臨,你準備好了嗎?
責任編輯:彭凡 來源: 博客園
相關推薦

2016-09-08 23:47:17

大數據大數據服務

2016-10-17 09:33:24

大數據產業鏈場景應用

2015-05-06 15:41:22

大數據服務HDFS云計算

2014-06-18 10:50:09

大數據大數據服務神州數碼

2017-01-07 11:45:43

醫療健康大數據虛擬化

2013-04-19 11:44:25

IDC大數據服務存儲市場

2017-01-12 09:16:09

大數據政府馬圈地

2015-08-27 16:55:09

2021-04-08 10:43:59

大數據技術安全

2016-03-30 09:17:32

Think BigTeradata開源大數據

2023-12-11 16:36:09

2020-11-20 14:15:23

大數據數據存儲

2013-12-18 11:40:35

AmazonKinesis大數據服務

2018-12-14 09:48:23

Redis數據故障

2019-10-29 14:15:25

云存檔數據服務技術

2012-02-14 10:18:11

WCF數據服務

2017-07-20 07:30:16

大數據數據互聯網

2023-10-12 13:01:29

Redis數據庫

2020-03-03 14:15:49

Redis持久化數據庫

2013-10-08 17:00:35

AdMaster大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线二区 | 黄色小视频入口 | 天天看天天爽 | 亚洲美女一区 | 久久精品国产久精国产 | 欧美激情啪啪 | 亚洲精选久久 | 成人不卡 | 国产1区2区3区| 国产精品欧美日韩 | 成人av电影在线观看 | 精品成人在线 | 欧美日韩视频在线播放 | 久久久久久久一区 | 黄网站涩免费蜜桃网站 | 国产精品不卡视频 | 九九热免费在线观看 | 国产精品视频免费看 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品一区二区三区在线 | 成人福利电影 | 亚洲激精日韩激精欧美精品 | 91在线精品一区二区 | 欧美另类视频在线 | 国产精品亚洲一区二区三区在线观看 | 一级毛片观看 | 99久久99久久精品国产片果冰 | 九九热精品视频 | 鲁视频| 久久大全| 成人综合视频在线 | 久久69精品久久久久久久电影好 | 精品久久久久久中文字幕 | 精品免费国产一区二区三区四区介绍 | 亚洲成av| 成人h电影在线观看 | 日本一区二区视频 | 一区二区三区在线 | 精品网| 亚州精品天堂中文字幕 | 美女福利视频一区 |