91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

編譯安裝Redis及使用systemd管理

發布時間:2020-03-03 17:10:46 來源:網絡 閱讀:1050 作者:何小帥 欄目:系統運維

環境

OS redis 版本 防火墻和selinux
CentOS7 4.0.14 關閉

安裝步驟

安裝前裝備

1.因為redis是用C編寫的,所以需要安裝gcc
#yum -y install gcc
2.下載redis源碼包
#wget -P /usr/local/src/ http://download.redis.io/releases/redis-4.0.14.tar.gz

編譯安裝

#cd /usr/local/src/
#tar xf redis-4.0.14.tar.gz
#cd redis-4.0.14
#make PREFIX=/apps/redis install #PREFIX表示指定redis的安裝目錄
#mkdir /apps/redis/{etc,logs,data,run} #創建配置文件、日志、數據等目錄
#cp redis.conf /apps/redis/etc/

編輯redis服務啟動腳本,使用systemd管理該服務

注:該腳本是從yum安裝的redis生成的service文件拿過來稍作修改后用的

#cat > /usr/lib/systemd/system/redis.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

注:該腳本中關閉redis服務是通過另一個腳本/usr/libexec/redis-shutdown來實現的,yum安裝的redis有該腳本,如果是編譯安裝的redis沒有該腳本,內容如下:

#cat /usr/libexec/redis-shutdown 
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x

REDIS_CLI=/usr/bin/redis-cli

# Retrieve service name
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
   SERVICE_NAME=redis
fi

# Get the proper config file based on service name
CONFIG_FILE="/apps/redis/etc/$SERVICE_NAME.conf"

# Use awk to retrieve host, port from config file
HOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`
PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`
SOCK=`awk '/^[[:blank:]]*unixsocket\s/ { print $2 }' $CONFIG_FILE | tail -n1`

# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
if [ "$SERVICE_NAME" = redis ]; then
    PORT=${PORT:-6379}
else
    PORT=${PORT:-26739}
fi

# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS"  ] || ADDITIONAL_PARAMS="-a $PASS"

# shutdown the service properly
if [ -e "$SOCK" ] ; then
    $REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdown
else
    $REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
#chmod +x /usr/libexec/redis-shutdown

創建redis用戶和設置相關權限

#groupadd -g 888 redis && useradd -r -u 888 -g 888 redis -s /sbin/nologin
#chown redis.redis -R /apps/redis/

創建軟連接

#ln -s /apps/redis/bin/* /usr/bin/
#ll /usr/bin/redis-*
lrwxrwxrwx 1 root root 31 Feb  9 21:34 /usr/bin/redis-benchmark -> /apps/redis/bin/redis-benchmark #redis性能測試工具
lrwxrwxrwx 1 root root 31 Feb  9 21:34 /usr/bin/redis-check-aof -> /apps/redis/bin/redis-check-aof #AOF文件檢查工具
lrwxrwxrwx 1 root root 31 Feb  9 21:34 /usr/bin/redis-check-rdb -> /apps/redis/bin/redis-check-rdb #RDB文件檢查工具
lrwxrwxrwx 1 root root 25 Feb  9 21:34 /usr/bin/redis-cli -> /apps/redis/bin/redis-cli #redis客戶端工具
lrwxrwxrwx 1 root root 30 Feb  9 21:34 /usr/bin/redis-sentinel -> /apps/redis/bin/redis-sentinel #哨兵,軟連接到server
lrwxrwxrwx 1 root root 28 Feb  9 21:34 /usr/bin/redis-server -> /apps/redis/bin/redis-server #redis服務啟動命令

更改rdb文件存放的目錄路徑和設置相關權限

#sed -i '/^dir/s#./#/apps/redis/data#' /apps/redis/etc/redis.conf

驗證redis啟動

編譯安裝Redis及使用systemd管理

解決redis的錯誤和警告

Failed opening the RDB file dump.rdb (in server root dir /) for saving: Permission denied

參考資料:https://stackoverflow.com/questions/22160753/redis-failed-opening-rdb-for-saving-permission-denied

執行systemctl stop redis命令的時候,在/var/log/messages日志中發現上面的錯誤,出現該錯誤的原因是因為關閉redis之前需要將數據保存到rdb文件中,但是因為權限原因導致報錯,解決方法如下:
在redis的配置文件中指定保存rdb文件的目錄,并確保相關的權限正確
#ll /apps/redis/data/ -d
drwxr-xr-x 2 redis redis 22 Feb 11 20:33 /apps/redis/data/
#vim /apps/redis/etc/redis.conf
dir /apps/redis/data

Socket Maximum Connection

參考資料:https://stackoverflow.com/questions/36880321/why-redis-can-not-set-maximum-open-file

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

backlog參數控制的是三次握手的時候server端收到client ack確認號之后的隊列值。

Memory Overcommit

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.

0:表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。 
1:表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。 
2:表示內核允許分配超過所有物理內存和交換空間總和的內存

由于這兩個是相關的,所以一塊解決

#vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 1024

要使這些配置生效,需要重新加載配置

#sysctl -p

Transparent Huge Pages

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.

大頁內存動態分配,需要關閉讓redis負責內存管理。

臨時生效

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

要永久解決此問題,請遵循日志的建議并修改rc.local

#vim /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
#chmod +x /etc/rc.d/rc.local
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陇南市| 厦门市| 文昌市| 故城县| 巴里| 嘉峪关市| 太谷县| 建德市| 全州县| 贞丰县| 新乡县| 兴国县| 乌拉特后旗| 罗山县| 祁东县| 镶黄旗| 巨鹿县| 湾仔区| 桦川县| 威远县| 陈巴尔虎旗| 庆阳市| 四子王旗| 香港| 扎囊县| 和林格尔县| 奈曼旗| 龙里县| 成安县| 沁水县| 沙湾县| 保山市| 峨山| 江华| 黔南| 眉山市| 景泰县| 昌都县| 赤水市| 六枝特区| 库伦旗|