Redis 架設教學

日前在架設 Redis 時,為了解決啟動的各種 warning,花費了近兩個小時解決,也順便紀錄了解決過程,分享給遇到同樣問題的人,希望對各位有幫助。

∗:架設環境是在 Ubuntu server 14.04.4

∗:整個過程皆需使用 root 進行操作

安裝

因個人偏好使用 PPA 的版本,如果不想要的話,跳過第一條指令即可,而安裝透過 apt-get 即可完成

add-apt-repository ppa:chris-lea/redis-server

apt-get update

apt-get install redis-server

這樣即完成安裝,接著,就是處理可能遇到的 warning 囉

首先,請查看「/var/log/redis/redis-server.log」此檔案

redis-server-success-working.png

如果內容與上方類似,那麼恭喜你囉,Redis 已正常運作中了;而如果你發現有警告訊息,別緊張,接下來將針對我所遇過的狀況給予解決方法,希望能幫到你

maximum open files

系統會限制每個使用者開檔的數量,預設值是 4096,而在 Redis 的預設設定中,最大開檔數量為 10000,已超出系統限制,因此會出現此訊息,而為了解決此問題,我們必須將 redis 這個使用者的開檔數量限制提高,當然,你也可以選擇更改 redis 的設定,這也是一種解決方法

Ubuntu 14.10 以前

首先,請編輯「/etc/security/limits.conf」此設定檔,於尾端加上以下兩行

redis soft nofile 16383

redis hard nofile 16383

∗:soft 和 hard 所代表的意義可以參考 此篇此篇 說明

完成的畫面如下

limits-conf

接著,請於這兩個檔案尾端加上下面這行設定

「/etc/pam.d/common-session」、「/etc/pam.d/common-session-noninteractive」

session required pam_limits.so

最後,請編輯「/etc/default/redis-server」此檔案,並將「#ULIMIT=16383」此行取消註解,完成畫面如下

redis-server.png

都完成後將伺服器重新啟動,此問題應可解決

Ubuntu 15.04 以後

首先,請進入「/etc/systemd/system」此資料夾,如果此資料夾下沒有「redis.service」此檔案,請執行以下指令

ln -s /lib/systemd/system/redis-server.service redis.service

接著,請編輯此檔案,並在「[Service]」下方增加下列設定

LimitNOFILE=16000

完成後設定檔會類似下方圖片

redis-service.png

確認無誤後存檔並重新啟動伺服器,此問題應可解決

overcommit_memory is set to 0

請編輯「/etc/sysctl.conf」此檔案,於尾端加上下面這行

vm.overcommit_memory = 1

重新啟動伺服器後此問題即可解決,那麼這到底是什麼東西呢,有興趣的話可以參考此篇文章的說明

Transparent Huge Pages (THP) support enabled

此問題請參考 MongoDB 所提供的方法:https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/

TCP backlog setting of 511

請編輯「/etc/sysctl.conf」此檔案,於尾端加上下面這行

net.core.somaxconn = 65535

重新啟動伺服器後此問題即可解決,此參數的說明可以參考此篇文章

結語

這次的教學主要是提供解決方法,並沒有對每個狀況做深入的說明,因為其背後都很複雜,我自己也不是很了解,如果未來有接觸到相關的資訊,也會繼續跟大家分享的!

參考資料:

  1. https://underyx.me/2015/05/18/raising-the-maximum-number-of-file-descriptors
  2. https://unix.stackexchange.com/questions/161724/daemons-open-file-limit-is-reached-even-though-the-system-limits-have-been-incr
  3. http://www.jbxue.com/LINUXjishu/5303.html
  4. https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/
  5. https://www.techandme.se/performance-tips-for-redis-cache-server/