O problema estava no script de inicialização do daemon. Ele estava usando o setuidgid para executar o daemon sob o usuário headless.Parece que o setuidgid não instalará os limites de recursos que estão definidos no limits.conf ao mudar o usuário / grupo para o processo. Um daemon deve cuidar da configuração de limites de recursos para si mesmo por meio de seus scripts de inicialização. Definindo limites máximos de FD para a sessão atual no script de inicialização, os novos limites foram refletidos para o daemon. Isso foi feito inserindo-se uma linha ulimit -n como abaixo no script de lançamento do daemon.
ulimit -n $NEW_MAX_LIMIT
exec setuidgid userxyz /pat/to/daemon.sh