redis服務器性能優化


1、系統內存OOM優化

 vm.overcommit_memory

 

Redis會占用非常大內存,所以通常需要關閉系統的OOM,方法為將“/proc/sys/vm/overcommit_memory”的值設置為1(通常不建議設置為2)
也可以使用命令sysctl設置,如:sysctl vm.overcommit_memory=1,但注意一定要同時修改文件/etc/sysctl.conf,執行“sysctl -p”,以便得系統重啟后仍然生效。

可選值:0、1、2

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

2: 表示內核允許分配超過所有物理內存和交換空間總和的內存

# cat /proc/sys/vm/overcommit_memory
0

# echo vm.overcommit_memory = 1 >> /etc/sysctl.conf

# sysctl -p

2、關閉透明大頁(THP)

 

 透明大頁(THP)管理和標准/傳統大頁(HP)管理都是操作系統為了減少頁表轉換消耗的資源而發布的新特性。這二者的區別在於大頁的分配機制,標准大頁管理是預分配的方式,而透明大頁管理則是動態分配的方式。有兩種關閉方法:

方法1:設置/etc/default/grub文件,在系統啟動是禁用。

修改

[root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@redis01 ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto biosdevname=0 net.ifnames=0 rhgb quiet transparent_hugepage=never"

GRUB_DISABLE_RECOVERY="true"

 

生效

[root@redis01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-6fdccda7f03241d0901c5b21f3d96fd9
Found initrd image: /boot/initramfs-0-rescue-6fdccda7f03241d0901c5b21f3d96fd9.img
done

重啟后檢查
[root@redis01 ~]# reboot

[root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@redis01 ~]#

方法2:設置/etc/rc.local文件

[root@redis01 ~]# cat /etc/rc.local 
###  close THP  ###
if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
  echo never  > /sys/kernel/mm/transparent_hugepage/enabled
fi

[root@redis01 ~]# chmod +x /etc/rc.d/rc.local
[root@redis01 ~]# reboot

[root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

3、增大TCP隊列的值

此參數是指:已完成三次握手的TCP連接隊列,默認值511,但是Linux系統內核參數socket最大連接的值默認是128,對應文件/proc/sys/net/core/somaxconn,當系統並發量大且客戶端連接緩慢時,應該將兩個值進行參考設置。

建議將/proc/sys/net/core/somaxconn的值設置為2048, 如果重啟生效,需要在/etc/sysctl.conf中設置: net.core.somaxconn = 2048 執行sysctl -p生效

[root@redis01 ~]# cat /proc/sys/net/core/somaxconn
128

[root@redis01 ~]# echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf 
[root@redis01 ~]# sysctl -p
vm.overcommit_memory = 1
net.core.somaxconn = 2048

4、增大linux最大打開文件數

[root@redis01 ~]# cat /etc/security/limits.conf 

* soft noproc 10240
* hard noproc 10240
* soft nofile 65535
* hard nofile 65535 
需要重啟生效
[root@redis01 ~]# ulimit -n

 

5、設置密碼requirepass和masterauth

requirepass用於客戶端連接時的認證,masterauth用於slave向master請求復制數據時的認證。

注意事項:
    (1)密碼要復雜
    (2)masterauth不能王姐,且通過明文傳輸

6、將危險命令使用rename-command設置為空或別名

注意事項:
    (1)此配置不支持config set動態進行。
    (2)config命令本身不建議設置成別名。

 7、使用非root用戶啟動,使用非默認端口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM