¿Por qué se produjo el error "Demasiados archivos abiertos" al abrir una página web con polipo instalado en OS X 10.11.4?

1

He instalado el proxy de almacenamiento en caché polipo-1.1.1 en mi OS X 10.11.4 con homebrew :

brew install polipo --with-large-chunks

A veces se abren las URL ( this La página, por ejemplo) falla con este mensaje de error:

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.

He configurado el archivo ~/.polipo como archivo de configuración con solo los parámetros socksParentProxy y socksProxyType .

El valor de ulimit -n es 4864 .

En /usr/local/var/cache/polipo tengo 510 carpetas y el tamaño total de estas carpetas es 297 MB .

El número total de archivos que están abiertos con polipo con este comando es 219 :

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

¿Por qué se produjo este error y cómo puedo evitarlo?

¿Hay alguna configuración que no haya podido configurar?

    
pregunta Hamid Rohani 22.05.2016 - 13:27

1 respuesta

1

Esta es una respuesta rápida. Si sabe qué configuraciones causaron este problema, envíe su respuesta

No descubrí por qué ocurre este error, pero resuelvo el problema cada vez que aparece este error ejecutando este 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)

Después de reiniciar la instancia polipo , ese error desaparece.

NOTA: este comando debe ejecutarse OUT en una sesión de tmux . En una sesión tmux no funcionará:

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

Si está ejecutando dicha sesión, separe la sesión con control + b (o cualquier combinación de teclas de prefijo que haya establecido) y luego presione d . Ahora ejecuta ese comando.

LA MEJOR ALTERNATIVA: usé reattach-to-user-namespace para reiniciar el servicio polipo directamente desde la sesión tmux:

$ brew install reattach-to-user-namespace

entonces brew services funcionará.

ACTUALIZACIÓN: encontré que mi tamaño de caché polipo local es lo suficientemente grande:

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

Hay una función de "purga" que se explica aquí :

  

El comportamiento de la bandera -x está controlado por tres variables de configuración. La variable diskCacheUnlinkTime especifica el tiempo durante el cual una entrada en el disco debe permanecer sin uso antes de que sea elegible para su eliminación; El valor predeterminado es 32 días.

Así que dejé el demonio polipo con servicios de preparación:

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

Ahora se reduce el tamaño del caché local:

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

Y parece que el error se ha ido.

    
respondido por el Hamid Rohani 20.08.2016 - 16:40

Lea otras preguntas en las etiquetas