Too many open files
informação
Se você precisar da ajuda de um especialista para resolver este ou qualquer outro problema, consulte nossos termos de suporte técnico.
Descrição
Com um grande número de câmeras, em torno de 128, você pode encontrar os limites do Inotify — ao adicionar uma câmera, a seguinte mensagem pode aparecer no log do servidor:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xe8 pc=0xdda663]
goroutine 1258 [running]:
gitlab.com/yuccastream/yucca/pkg/runner/latest.(*Runner).GetStats(...)
/builds/yuccastream/yucca/pkg/runner/latest/runner.go:327
gitlab.com/yuccastream/yucca/pkg/server/executor/exec.(*Worker).GetStream(0xc002b74500)
/builds/yuccastream/yucca/pkg/server/executor/exec/worker.go:188 +0xa3
gitlab.com/yuccastream/yucca/pkg/server/executor/exec.(*Executor).StatusStream(0xc0003f01c0, 0xc00074b6c0)
/builds/yuccastream/yucca/pkg/server/executor/exec/executor.go:126 +0xb8
gitlab.com/yuccastream/yucca/pkg/server.(*Server).stateWatcher(0xc000c1e000)
/builds/yuccastream/yucca/pkg/server/server.go:914 +0x233
created by gitlab.com/yuccastream/yucca/pkg/server.(*Server).Start in goroutine 1
/builds/yuccastream/yucca/pkg/server/server.go:695 +0x4db
E no log de uma das câmeras:
Error: too many open files
Por padrão, muitas distribuições Linux têm os seguintes parâmetros definidos:
grep NOFILE /etc/systemd/system.conf
#DefaultLimitNOFILE=1024:524288
Solução
Para aumentar os limites, execute:
sed -i 's/^#DefaultLimitNOFILE=.*/DefaultLimitNOFILE=10240:524288/' /etc/systemd/system.conf
E também aumente esse parâmetro para a unit systemd yucca.service, no arquivo /lib/systemd/system/yucca.service:
mkdir -p /etc/systemd/system/yucca.service.d/
cat > /etc/systemd/system/yucca.service.d/override.conf << 'EOF'
[Service]
LimitNOFILE=10240
EOF
sudo systemctl daemon-reload
sudo systemctl cat yucca # проверить
Depois aplique as configurações e reinicie o processo yucca.service:
sudo systemctl restart yucca.service