日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 开发陷阱及避坑指南!

發布時間:2025/3/21 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 开发陷阱及避坑指南! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文首發于博客園,作者:后青春期的Keats

地址:https://www.cnblogs.com/keatsCoder/

Linux 配置優化

我們在使用?Redis?過程中,可能更多的關注?Redis?本身的一些配置優化,如 AOF、RDB 配置、數據結構配置優化等。

但是很少關心?Redis?的載體,服務器的優化。而這往往為我們的項目運行帶來災難性的打擊。因此服務器優化也是必不可少的。

內存分配控制

Redis?啟動時,可能會出現下面的日志

#?WARNING?overcommit_memory?is?set?to?0!?Background?save?may?fail?under?low?memory?condition.?To?fix?this?issue?add?'vm.overcommit\_memory?=?1'?to?/etc/sysctl.conf?and?then?reboot?or?run?the?command?'sysctl?vm.overcommit_memory=1'?for?this?to?take?effect.

overcommit 是 Linux 的一種內存處理機制:Linux 對絕大多數內存申請都會回復 yes,以便運行更多的程序。因為申請內存后,并不會馬上使用內存。這種機制就是 overcommit 。

而 overcommit_memory 是用來設置內存分配策略的,有三種取值

值含義
0內核檢查是否有足夠可用內存,有則通過。沒有則申請失敗,并返回錯誤給進程
1表示內核允許超量使用內存直到用完為止
2表示內核絕不過量的使用內存

日志中 Background save 指的是 bgsave 和 bgrewriteaof 。根據操作系統的配置,如果 overcommit_memory 設置為 0 則可能會造成內存申請失敗而導致后臺持久化失敗。

因此?Redis?建議將這個值設置為 1 是為了 fork 操作在低內存下也能執行成功。

設置方法

通過命令修改,立即生效。重啟后會失效

sysctl?vm.overcommit_memory=1

再將改動寫入系統配置文件,使其永久有效

echo?"vm.overcommit_memory=1"?>>?/etc/sysctl.conf

建議

采用?Redis?建議的配置是為了在極端情況下 Linux 可以擠出來一些內存供?Redis?備份,但是更建議優先配置好 maxmemory ,給機器留 20%~30% 的空閑內存。

硬盤虛擬內存

swap 是指當物理內存不足時,拿出部分硬盤空間當 SWAP 分區(虛擬成內存)使用。我們都知道硬盤的讀寫速度相對于內存實在是太雞肋,對于高并發、高吞吐的應用來說,磁盤IO通長會成為系統瓶頸。Linux 系統中 swappiness 的值控制操作系統使用 swap 的傾向程度。

查看內核版本:

uname?-sr 值說明
0內核版本 3.5 及以上 寧愿使用 OOM Killer 也不使用 SWAP;內核版本 3.4 及更早則反之
1內核版本 3.5 及以上 寧愿使用 OOM Killer 也不使用 SWAP
60默認值
?主動使用 SWAP

PS:OOM Killer 是指當 Linux 發現操作系統內存不足時,主動殺死一些非內核進程的操作

設置方法

echo {value} > /proc/sys/vm/swappiness

echo vm.swappiness={value} >> etc/sysctl.conf

監控swap

查看 Swap 的總體情況

free?-m

?

最后一行即展示了 Swap 的使用情況,一共 2047 Mb,以使用 0 Mb,空閑 2047 Mb

實時查看 Swap 的使用

參數 si 表示 swap in ,so 表示 swap out 在我的機器上都是 0 表示沒有使用交換

查看指定進程的 Swap 情況

通過 ps -ef |grep redis 查看?Redis??進程號,例如 1621

通過 cat /proc/1621/smaps | grep Swap 命令查看每個內存塊 Redis Swap 的使用情況

THP 內存頁大小

Redis?啟動時可能會看到下面的日志

WARNING?you?have?Transparent?Huge?Pages?(THP)?support?enabled?in?your?kernel.?This?will?create?latency?and?memory?usage?issues?with?Redis.?To?fix?this?issue?run?the?command?'echo?never?>?/sys/kernel/mm/transparent_hugepage/enabled'?as?root,?and?add?it?to?your?/etc/rc.local?in?order?to?retain?the?setting?after?a?reboot.?Redis?must?be?restarted?after?THP?is?disabled.

提示告訴我們建議修改 Transparent Huge Pages (THP) 的配置,Linux kernel 在 2.6.38 內核增加了 THP 特性,支持大內存頁(2MB)分配,默認開啟。

開啟后可加快 fork 子進程的速度,但是 fork 操作后,每個內存頁從原來的 4KB 變為 2MB,會大幅加重重寫期間父進程內存消耗。

同時每次寫命令引起的復制內存頁單位放大了512倍。會拖慢寫操作的執行時間。造成大量的寫操作慢查詢因此?Redis?日志中建議禁用它。另外關注Java技術棧公眾號在后臺回復面試可以獲取一份面試題大全。

方法如下:

echo?never?>?/sys/kernel/mm/transparent_hugepage/enabled

另外在 /etc/rc.local 中追加

echo?never?>?/sys/kernel/mm/transparent_hugepage/enabled

對于某些發行版本(例如紅帽6以上)配置文件不在這個位置(在 /sys/kernel/mm/redhat_transparent_hugepage/enabled),但是?Redis?檢查 THP 是寫死的此位置,所以雖然這么修改后?Redis?不報警然而實際是沒有作用的,需要注意。應該改動對應位置的值

使用NTP 同步時間

在集群或哨兵環境中,多臺服務器使用相同的網絡時間協議同步時間能更方便的閱讀日志,排查問題

可以設置定時任務同步時間

crontab?-u?//設定某個用戶的cron服務 crontab?-l?//列出某個用戶cron服務的詳細內容 crontab?-r?//刪除某個用戶的cron服務 crontab?-e?//編輯某個用戶的cron服務 crontab?-i?//打印提示,輸入yes等確認信息

添加每小時執行一次的任務

0?*?*?*?*?/usr/sbin/ntpdate?cn.pool.ntp.org?>?dev/null?2>&1

最大連接數限制

通過 ulimit -a 命令查看和設置當前用戶進程的資源數,其中包含 open files 參數,是單個用戶同時打開的最大文件描述符個數。雖然?Redis?中可以配置最大的客戶端連接數(默認 10000) 。

Redis?內部最多使用 32 個文件描述符。當 open files = 4096 時,Redis 最大提供 4096-32=4064 個連接。因為它不能突破操作系統的限制。如果需要,使用如下命令修改:

ulimit?-Sn?{max-open-files}

TCP backlog

tcp backlog 配置的是 tcp 握手時候的隊列大小。如果該值過小。會導致高并發場景下部分連接第三次握手ACK被丟棄。關于 backlog

The?TCP?backlog?setting?of?511?cannot?be?enforced?because?/proc/sys/net/core/somaxconn?is?set?to?the?lower?value?of?128.

Redis?啟動時,會告訴我們系統配置中該值是 128,而 Redis 511。這個 511 是沒用的,因為系統比這個小。需要修改系統 backlog 的值。

echo?511?>?/proc/sys/net/core/somaxconn

參考文獻:

《Redis開發與運維》 --- 付 磊 張益軍

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Redis 开发陷阱及避坑指南!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本黄色精品 | 韩国中文字幕在线观看 | 性感美女视频一二三 | 免费麻豆 | 中文字幕1区 | 91精品国产综合久久国产大片 | 日韩一区二区在线观看视频 | 麻豆视频黄色 | 蜜桃成人av | 悟空影视大全免费高清观看在线 | 国产第一精品 | 影音先锋日韩资源 | 在线观看网站污 | 欧美午夜一区 | 操一操视频 | 欧美性极品少妇xxxx | 国产精品色图 | 精品国精品国产自在久不卡 | 久久女同互慰一区二区三区 | 国产91小视频 | 俺也去五月婷婷 | 一级草逼片| 西西大胆午夜视频 | 三上悠亚在线一区 | 国产伦精品一区三区精东 | 无码人妻丰满熟妇区毛片蜜桃精品 | 欧美激情va永久在线播放 | 女同在线视频 | 一区二区导航 | 四虎在线免费观看视频 | 欧美午夜精品久久久久免费视 | 免费中文字幕在线观看 | 久久九精品 | y11111少妇 | 国产三级精品三级在线观看 | 日韩三级黄 | 国产黑丝在线播放 | 国产在线伊人 | 国产成人观看 | 青娱乐自拍视频 | 亚洲少妇一区 | 蜜桃精品久久久久久久免费影院 | 日韩av电影手机在线观看 | 精品国产乱码久久久久久免费 | 视频一区在线免费观看 | 求毛片网站 | 日韩av不卡在线观看 | 免费成人深夜 | 黄色成人在线观看 | 久久精品无码中文字幕 | 国产六区| 好吊视频一区二区三区 | 天降女子在线 | 欧美 日韩 国产 成人 在线 | 九九这里只有精品视频 | 国产女主播在线观看 | 红猫大本营在线观看的 | 精品一区二区免费看 | 亚洲国产精品无码久久久 | 欧美大黄视频 | wwwxxx欧美 | 久色在线 | 飘花影院伦理片 | 久久久久久久亚洲精品 | 亚洲精品国产精品乱码在线观看 | 超碰丝袜 | 亚洲AV无码成人精品区明星换面 | 亚洲成人一区 | 男男gay动漫 | 欧美日韩在线视频一区二区 | 国产亚洲色婷婷久久99精品 | 国产三级大片 | 男女视频免费观看 | 涩涩视频在线观看免费 | 少妇粉嫩小泬白浆流出 | 日韩最新视频 | 欧美激情黑白配 | 一二三区视频 | 国久久| 国产精品久久久久久一区二区 | 99免费在线视频 | 亚洲欧美在线观看视频 | 91网站观看 | 男女拍拍拍 | 美女狠狠干 | 那个网站可以看毛片 | 午夜电影福利网 | www.日本在线视频 | 美国成人免费视频 | 极品美女穴 | 中文字幕一区二区视频 | 午夜在线观看影院 | 午夜福利理论片在线观看 | 精品动漫一区二区三区在线观看 | 国产精品字幕 | 国产精品久久久久久久免费 | 女人下面无遮挡 | 韩国三级在线 | 欧美最猛性xxxx |