Sto eseguendo un server Web che gestisce molte migliaia di connessioni di socket Web simultanee. Affinché ciò sia possibile, su Debian linux (la mia immagine di base è google/debian: wheezy, in esecuzione su GCE), dove il numero predefinito di file aperti è impostato su 1000, di solito basta impostare l'ulimit sul numero desiderato (64.000) .Docker Ignora limits.conf (tentando di risolvere l'errore "troppi file aperti")
Questo funziona alla grande, tranne per il fatto che quando ho implementato la mia applicazione e l'ho implementata, ho scoperto che il tipo di finestra mobile ignora le definizioni dei limiti. Ho provato la seguente (tutti sulla macchina host, non sul contenitore stesso):
MAX=64000
sudo bash -c "echo \"* soft nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"* hard nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"ulimit -c $MAX\" >> /etc/profile"
ulimit -c $MAX
Dopo aver fatto qualche ricerca ho trovato che le persone sono state in grado di risolvere un problema simile in questo modo:
sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf"
e riavviare/riavviare il servizio finestra mobile.
Tuttavia, tutto quanto sopra non riesce: sto ricevendo l'errore "troppi file aperti" quando la mia app viene eseguita all'interno del contenitore (facendo quanto segue senza finestra mobile risolve il problema).
Ho provato a eseguire ulimit -a
all'interno del contenitore per ottenere un'indicazione se l'installazione di ulimit ha funzionato, ma così facendo si genera un errore su ulimit che non è un eseguibile che fa parte del PERCORSO.
Qualcuno si è imbattuto in questo e/o può suggerire un modo per ottenere docker per riconoscere i limiti?
Assicurati di riavviare anche il servizio daemon Docker! – cgp