雖然Logstash有內建Persistent Queues,官網也強調說可以用來取代Redis或是RabbitMQ,Apache Kafka這類的消息隊列,但還是不建議使用Persistent Queues原因有幾個:
所以這邊用Redis來當作緩存
sudo apt-get update && sudo apt-get install redis-server -y
sudo systemctl enable redis-server.service
sudo systemctl start redis-server.service
編輯 /etc/redis/redis.conf
maxmemory 1700mb #應該保留機器上的一半給fork子進程
maxmemory-policy noeviction #當記憶體滿了的時候不會刪除,只會回傳error避免key遺失
查看 /var/log/redis/redis-server.log 如果有看到這些
# 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.
編輯 /etc/sysctl.conf
vm.overcommit_memory=1
net.core.somaxconn= 1024 #連線數
vm.overcommit_memory用來設置內存分配策略,它有三個可選值,如下表所示。
vm.overcommit_memory | 含義 |
---|---|
0 | 表示內核將檢查是否有足夠的可用內存。如果有足夠的可用內存,內存申請通過,否則內存申請失敗,並把錯誤返回給應用進程 |
1 | 表示內核允許超量使用內存直到用完為止 |
2 | 表示內核決不過量的(“never overcommit”)使用內存,即系統整個內存地址空間不能超過swap+50%的RAM值,50%是overcommit_ratio默認值,此參數同樣支持修改 |