Chà, hơi muộn cho bài viết này, nhưng vì tôi vừa dành rất nhiều thời gian (cả đêm) để định cấu hình máy chủ redis mới 3.0.6 trên ubuntu 16.04. Tôi nghĩ tôi chỉ nên viết ra cách tôi làm điều đó để những người khác không phải mất thời gian của họ ...
Đối với máy chủ redis mới được cài đặt, bạn có thể sẽ gặp các sự cố sau trong tệp nhật ký redis là /var/log/redis/redis-server.log
Tệp mở tối đa
3917:M 16 Sep 21:59:47.834 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
3917:M 16 Sep 21:59:47.834 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
3917:M 16 Sep 21:59:47.834 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
Tôi đã thấy rất nhiều bài đăng yêu cầu bạn sửa đổi
/etc/security/limits.conf
redis soft nofile 10000
redis hard nofile 10000
hoặc
/etc/sysctl.conf
fs.file-max = 100000
Điều đó có thể hoạt động trong ubuntu 14.04, nhưng nó chắc chắn không hoạt động trong ubuntu 16.04. Tôi đoán nó có liên quan gì đó đến việc thay đổi từ phiên bản mới sang systemd, nhưng tôi không phải là chuyên gia về nhân linux!
Để khắc phục điều này, bạn phải thực hiện systemd cách
/etc/systemd/system/redis.service
[Service]
...
User=redis
Group=redis
# should be fine as long as you add it under [Service] block
LimitNOFILE=65536
...
Sau đó, bạn phải tải lại daemon và khởi động lại dịch vụ
sudo systemctl daemon-reload
sudo systemctl restart redis.service
Để kiểm tra xem nó có hoạt động hay không, hãy thử giới hạn mức catc
cat /run/redis/redis-server.pid
cat /proc/PID/limits
và bạn sẽ thấy
Max open files 65536 65536 files
Max locked memory 65536 65536 bytes
Ở giai đoạn này, tệp đang mở tối đa được giải quyết.
Kết nối tối đa của ổ cắm
2222:M 16 Sep 20:38:44.637 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
Thừa bộ nhớ
2222:M 16 Sep 20:38:44.637 # Server started, Redis version 3.0.6
2222:M 16 Sep 20:38:44.637 # 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.
Vì hai điều này có liên quan đến nhau, chúng tôi sẽ giải quyết nó ngay lập tức.
sudo vi /etc/sysctl.conf
# Add at the bottom of file
vm.overcommit_memory = 1
net.core.somaxconn=1024
Bây giờ để các cấu hình này hoạt động, bạn cần tải lại cấu hình
sudo sysctl -p
Các trang khổng lồ trong suốt
1565:M 16 Sep 22:48:00.993 # 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.
Để giải quyết vĩnh viễn điều này, hãy làm theo đề xuất của nhật ký và sửa đổi rc.local
sudo vi /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
Điều này yêu cầu bạn khởi động lại , sao lưu dữ liệu của bạn hoặc làm bất cứ điều gì bạn cần trước khi thực sự làm điều đó !!
sudo reboot
Bây giờ, hãy kiểm tra lại nhật ký của bạn, bạn sẽ có một máy chủ redis mà không có bất kỳ lỗi hoặc cảnh báo nào.