amule error

Si sois de los que les dais caña al amule podréis llegar a encontraros con un problema, pasado un determinado número de archivos en descarga (no cuentan las descargas detenidas) empiezan a darse multitud de errores, de tal cantidad que se hace imposible leer el registro, varios por segundo. Además se llegan a perder archivos met y por tanto empiezan a desaparecer descargas de la lista una vez que volvemos a encender el amule.

Todo ello además implica que el consumo de cpu del programa sube llegando, en mi caso, al 50% de cpu, algo inaceptable.
El registro queda más o menos:

11:22:07: Archivo de créditos cargado, 11659 clientes conocidos
11:22:13: Carga todo bien y empieza a funcionar bien
11:49:27: Credits: Error while creating signature: OS_Rng: open /dev/urandom operation failed with error 24
11:49:27: CFile: Error when opening file (/media/Datos/Temp/146.part.met): Demasiados archivos abiertos
11:49:27: FileIO: Error on file copy. Can't open original file: /media/Datos/Temp/146.part.met
11:49:27: CFile: Error when opening file (/media/Datos/Temp/146.part.met): Demasiados archivos abiertos
11:49:27: ERROR salvando archivo part: Failed to open part.met file (146.part.met ==> xxx)
11:49:30: Credits: Error while creating signature: OS_Rng: open /dev/urandom operation failed with error 24
11:49:33: CFile: Error when opening file (/media/Datos/Temp/033.part.met): Demasiados archivos abiertos
11:49:33: FileIO: Error on file copy. Can't open original file: /media/Datos/Temp/033.part.met
11:49:33: CFile: Error when opening file (/media/Datos/Temp/033.part.met): Demasiados archivos abiertos
11:49:33: ERROR salvando archivo part: Failed to open part.met file (033.part.met ==> xxx)
11:49:52: FileIO: Error on file copy. Can't stat original file: /media/Datos/Temp/033.part.met
11:49:52: CFile: Error when opening file (/media/Datos/Temp/033.part.met): No existe el fichero ó directorio
Una interminable lista de errores:
  • CFile: Error when opening file (/media/Datos/Temp/xxx.part.met): Demasiados archivos abiertos
  • ERROR salvando archivo part: Failed to open part.met file (xxx.part.met)
  • FileIO: Error on file copy. Can't stat original file: /media/Datos/Temp/xxx.part.met
  • CFile: Error when opening file (/media/Datos/Temp/xxx.part.met): No existe el fichero ó directorio
Puede haber varias razones para que esto se produzca, paara tener claro que el problema es por lo que comento más abajo, hay que comprobar que con pocas descargas no pasa, ya que hay otras razones, bastante habituales, que dan error de lectura/escritura en disco, muy habitual por ejemplo cuando se intenta usar como carpeta temp una partición con ntfs, o un sistema de archivo con errores y que no está adecuadamente configurado en el archivo /etc/fstab para que se chequee periódicamente.

La razón no está en el propio amule, sino en una limitación por defecto que tiene el sistema linux, cuyos valores podéis comprobar si tecleais en consola ulimit -a, encontrareis algo como:
ordenata:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) unlimited
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Para nuestro problema, lo que nos afecta es el número de archivos abiertos, open files que está fijado por defecto en 1024, parecerá mucho, pero cada archivo del amule en descarga usa tres archivos, cada aplicación a su vez necesitará sus archivos abiertos, el switfox en torno a 10..., para cada programa podreis comprobar los archivos abiertos a partir del monitor de sistemas, botón derecho sobre cualquiera de los procesos y pincháis en la última opción, archivos abiertos.
Total, que dependiendo del número de procesos abiertos, el fallo surgirá con más o menos archivos en descarga, en mi caso en torno a 200 (pensaréis que son muchas pero ... teneís razón xD). Lo bueno es que estamos en linux, todo es configurable, y esa limitación también,


  • Ubuntu

Para cambiar el límite hay que editar un archivo de sistema:
sudo gedit /etc/security/limits.conf
y añadir una línea:
nombre_usuario hard nofile 2048

Donde nombre de usuario es el usuario con el que se ejecuta el amule, generalmente el que usáis pero para comprobarlo simplemente escribís en consola top y comprobáis el nombre de usuario asociado al amule (con el amule en marcha claro).

  • Debian

En este caso además hay que configurar PAM para que tenga en cuenta ese archivo, para ello editamos como root el archivo /etc/pam.d/common-session, y comprobamos que tiene está línea:

session required pam_limits.so

Así le decimos a PAM que cuando arranque tenga también en cuenta los límites.

  • Zenwalk
Puede que el archivo de límites no se encuentre en el path comentado arriba sino en su ubicación antigua: /etc/limits.conf


La nueva configuración solo surtirá efecto una vez que reiniciéis, para comprobar que efectivamente el límite es mayor: ulimit -n, a ver que dato devuelve.

5 comentarios:

Anónimo dijo...

hola amigo, tambien yo encontré este problema con amule.
Yo seguì tu consejo ma non va mejor... sigue a emitir mensajes de errores...
hay otra solucion?

P.S.
perdoname por mi español, es un poquito de tiempo che no voy en españa...

volante dijo...

¿qué valor te devuelve si escribes en terminal la orden ulimit -n?

jorge dijo...

no consigo cambiar el valor opne files, he hecho lo que pone pero no hay manera no cambia, que puedo hacer?

volante dijo...

Pues la verdad es que no se que puede ser, a mi me ha funcionado en todas las distros que he usado.
-Asegúrate de que el usuario es el correcto
-Reinicia para que surtan efecto los cambios

Anónimo dijo...

Hola a todos, aun no se si ha funcionado, porque todavía no he reiniciado. No se si es porque uso KUBUNTU pero desde consola, me dice que, no le suenan los comandos, seguramente son muy parecidos, pero el caso es que yo me apaño mejor con las interficies graficas (GUI), así que simplemente seguí la ruta del archivo que indicas etc / security / limits.conf, botón derecho sobre el archivo en cuestión, acción/abrir como root, se abre el editor de texto KATE y después en la ultima línea antes de: final de archivo. Escribí lo siguiente: #si quieres para un usuario pon aquí el nombre, si solo dejas el cuadradillo es genérico para todos hard nofile 2048
guardar los cambios y cerrar, editado ya esta, habrá que ver si funciona. Las faltas de ortografía son involuntarias. Agur.