Perché si è verificato un errore "Troppi file aperti" durante l'apertura di una pagina Web con polipo installata su OS X 10.11.4?

1

Ho installato polipo-1.1.1 caching proxy sul mio OS X 10.11.4 con homebrew :

brew install polipo --with-large-chunks

A volte aprendo gli URL ( questo pagina per esempio) non è riuscita con questo messaggio di errore:

504 Connect to apple.stackexchange.com:80 failed: Too many open files

The following error occurred while trying to access https://apple.stackexchange.com/questions/114514/can-the-default-permissions-on-dev-disk-be-changed:

504 Connect to apple.stackexchange.com:80 failed: Too many open files

Generated Sun, 22 May 2016 12:36:56 IRDT by Polipo on Hamids-MacBook-Pro.local:8123.

Ho impostato ~/.polipo file come file di configurazione con solo socksParentProxy e socksProxyType solo parametri.

Il valore di ulimit -n è 4864 .

In /usr/local/var/cache/polipo Ho 510 cartelle e la dimensione totale di queste cartelle è 297 MB .

Il numero totale di file aperti con polipo con questo comando è 219 :

lsof -p $(pgrep polipo) | wc -l

Perché si è verificato questo errore e come posso impedirlo?

Ci sono delle configurazioni che ho mancato di configurare?

    
posta Hamid Rohani 22.05.2016 - 13:27
fonte

1 risposta

1

Questa è una risposta rapida. Se sai quali configurazioni hanno causato questo problema, per favore pubblica la tua risposta

Non ho scoperto perché questo errore si verifica, ma risolvo il problema ogni volta che viene visualizzato questo errore eseguendo questo comando:

$ brew services restart polipo
Stopping 'polipo'... (might take a while)
==> Successfully stopped 'polipo' (label: homebrew.mxcl.polipo)
==> Successfully started 'polipo' (label: homebrew.mxcl.polipo)

Dopo aver riavviato l'istanza polipo , quell'errore scompare.

NOTA: questo comando dovrebbe essere eseguito OUT di una sessione tmux . In una sessione di tmux non funzionerà:

$ brew services restart polipo
~/Library/LaunchAgents/homebrew.mxcl.polipo.plist: Operation not permitted
==> Successfully started 'polipo' (label: homebrew.mxcl.polipo)

Se stai eseguendo una sessione di questo tipo, scollega la sessione con control + b (o qualsiasi combinazione di tasti prefix impostata) e quindi premi d . Ora esegui il comando.

LA MIGLIORE ALTERNATIVA: ho usato reattach-to-user-namespace per riavviare il servizio polipo direttamente dalla sessione tmux:

$ brew install reattach-to-user-namespace

allora brew services funzionerà.

UPDATE: ho scoperto che la dimensione della cache polipo locale è abbastanza grande:

$ du -d0 -h /usr/local/var/cache/polipo
13.8G    /usr/local/var/cache/polipo

Esiste una funzione di "spurgo" che è spiegata qui :

The behavior of the -x flag is controlled by three configuration variables. The variable diskCacheUnlinkTime specifies the time during which an on-disk entry should remain unused before it is eligible for removal; it defaults to 32 days.

Così ho fermato il demone polipo con i brew services:

$ brew services stop polipo
$ polipo -x
$ brew services start polipo

Ora la dimensione della cache locale è ridotta:

$ du -d0 -h /usr/local/var/cache/polipo
2.1G    /usr/local/var/cache/polipo

E sembra che l'errore sia sparito.

    
risposta data 20.08.2016 - 16:40
fonte

Leggi altre domande sui tag