¿Cómo se manejan los scripts del navegador que no responden?

¿Cómo se manejan los scripts del navegador que no responden?

Cuando mi computadora se congela, generalmente es muy fácil resolver el problema ingresando a la terminal y ejecutando top para descubrir qué está consumiendo la memoria y matando ese proceso. A veces puede ser difícil cuando está muy congelado, tengo que presionar CTRL+ ALT+ F1para ingresar al terminal. También es útil tener una configuración de método abreviado de teclado para ejecutar xkill, de modo que pueda eliminar aplicaciones GUI que sé que las están congelando.

Lo que no he descubierto cómo solucionar, incluso después de años de tener este problema, son estos scripts del navegador que no responden. A veces mi computadora se congela tanto que no puedo mover el puntero del mouse y, eventualmente, se descongela y veo que uno de los navegadores (solía ser siempre Firefox, últimamente Chrome), aparecerá una ventana emergente que dice javascript. el script no responde. Me da la opción de matarlo, pero presionar el botón de matar nunca parece resolver el problema.

¿Cómo afrontas este problema? Además, ¿cómo aborda los problemas de sobrecarga de memoria en general? Solía ​​​​presionar CTRL+ ALT+ T, ejecutar top y ver qué programa estaba usando más memoria y luego eliminarlo, pero son muchos pasos y cuando su computadora está congelada, un solo paso puede llevar mucho tiempo. Así que estoy buscando mejores formas, como configurar un interruptor de apagado para hacerlo en un solo paso, o configurar un demonio que elimine cualquier programa que esté a punto de congelar la máquina.

Además, ¿cuál es la mejor manera de saber qué programa está causando el problema? La parte superior no siempre es fácil de ver porque a veces la parte superior no muestra ningún programa que consuma demasiada CPU, pero si me desplazo hacia abajo veo que hay alrededor de 50 instancias de este programa ejecutándose, por lo que sería mucho mejor si pudiera ver la CPU combinada. uso del programa. Firefox y Chrome son los dos principales culpables, ocasionalmente sublime-text-3 (¿quizás esto se deba a que tienen demasiadas pestañas abiertas?).

Entonces encontré este comando:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

Lo que da esta lista ahora mismo:

  PID  PPID CMD                         %MEM %CPU
 6896   968 /opt/google/chrome/chrome - 13.1  2.7
27334  4769 /usr/lib/firefox/firefox     6.6 13.0
 5607  4769 /usr/bin/compiz              4.7 44.7
26381 26363 /usr/lib/libreoffice/progra  2.7  0.0
  953  4769 /opt/google/chrome/chrome h  2.0  3.0
 2777  2457 /usr/lib/xorg/Xorg -core :0  1.8 29.5
 6980  4769 /usr/lib/x86_64-linux-gnu/z  1.6  0.0
 8180  8167 mono /usr/lib/AirVPN/AirVPN  1.6  2.1
 1096   968 /opt/google/chrome/chrome -  1.4  0.1

Mi computadora no está congelada en este momento, así que está bien, pero Firefox se congela cuando intento usarlo. Tiendo a mantener muchas pestañas abiertas, ¿es por eso que veo tantas instancias de Chrome y Firefox cuando ejecuto Top?

Veo que htop ofrece muchas más opciones que top, por lo que probablemente sea una mejor herramienta para diagnosticar el problema. Hay algunas cosas que no entiendo sobre todo esto, en primer lugar, cuál es más importante: %CPU o %MEM cuando se trata de que tu computadora se congele regularmente. htop te permite ordenar por cualquiera de los dos, esto es lo que me muestra cuando ordeno por uso de memoria:ingrese la descripción de la imagen aquí

y esto es lo que obtengo cuando ordeno por uso de CPU:ingrese la descripción de la imagen aquí

Entonces, como vi al ejecutar ps, Firefox y Chrome están consumiendo la mayor parte de la memoria, y compiz está consumiendo la mayor parte de la CPU. ¿Existen otros factores importantes a tener en cuenta cuando se trata de descongelar su sistema? Por ejemplo, si entra en juego el tiempo que ha estado ejecutándose un proceso, veo que compiz ha estado ejecutándose por más tiempo que cualquier otra cosa:ingrese la descripción de la imagen aquí

En cuanto a un interruptor de emergencia, encontré uno que alguien más escribió:

while [ 1 ]; do 
    echo
    echo checking for run-away process ...

    CPU_USAGE=$(uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g")
    CPU_USAGE_THRESHOLD=300
    PROCESS=$(ps aux r)
    TOPPROCESS=$(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | grep -v PID | head -n 1)

    if [ $CPU_USAGE -gt $CPU_USAGE_THRESHOLD ]; then
        kill -9 $(ps -eo pid --sort=-%mem | grep -v PID | head -n 1)

        echo "High memory usage process killed $TOPPROCESS\n"
        echo "Load average was at $CPU_USAGE\n"
    else
        echo 'CPU Load Back to Normal'
        exit 0
    fi
done

Pero no estoy 100% seguro de cómo funciona ni de qué hace. Cuando corro:

uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g"

Sus números regresan como 149, 179, 178. Leí el manual de tiempo de actividad y no puedo entender lo útil que es para evitar que su sistema se congele.

No son ID de proceso que veo en ninguna de las memorias principales usando aplicaciones mostradas por htop.

Al ejecutar el tiempo de actividad por sí solo, aparece esto:

17:49:53 up 1 day, 11:09,  2 users,  load average: 3.16, 2.45, 2.03

Entonces mi sistema ha estado activo durante 17,49 horas. No sé qué significa el promedio de carga en términos de mi computadora. Mi hermano me regaló esta computadora recientemente porque tenía una sin usar en su oficina, cuando revisé las especificaciones:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 26
Model name:            Intel(R) Core(TM) i7 CPU         940  @ 2.93GHz
Stepping:              4
CPU MHz:               1867.000
CPU max MHz:           2934.0000
CPU min MHz:           1600.0000
BogoMIPS:              5852.21
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0-7

Estoy bastante sorprendido, es una bestia, 8 CPU. Y la RAM:

free -lm
              total        used        free      shared  buff/cache   available
Mem:          12005        7154         311         531        4539        3996
Low:          12005       11694         311
High:             0           0           0
Swap:         30516        1002       29513

12 Gb, Dios mío, no tenía ni idea. Mi viejo portátil tenía 2 Gb. Así que es un misterio por qué hace tanto frío ahora.

Entonces lo que me pregunto es:

1.) ¿Cuál es la mejor manera de descubrir qué está causando que su sistema se ralentice y se congele?

2.) ¿Cómo se maneja esta situación específica de script que no responde sin tener que cerrar el navegador real? Utilizo complementos como NoScript, pero muchas veces necesito habilitar JavaScript. Además, ciertos complementos también utilizan scripts. ¿Por qué matarlos nunca resuelve nada? ¿Es porque en realidad no se los puede matar así? ¿Habría alguna manera de escribir una secuencia de comandos que busque en sus navegadores y encuentre qué pestaña ejecuta la página con la secuencia de comandos que no responde, luego cierre y reinicie la pestaña? O mejor aún, ¿simplemente eliminar el script de una manera que permita que la computadora vuelva a funcionar correctamente? No sé por qué un script que no responde congela todo mi sistema, supongo que el navegador consume demasiada memoria cuando intenta ejecutar el script fallado.

2.) ¿Cuál es la mejor manera de descongelar su sistema, especialmente en los peores escenarios cuando no puede mover el puntero del mouse? ¿Sería una combinación de teclas cortas conectada a un interruptor de emergencia el camino a seguir?

3.) Para hacer un interruptor de apagado, ¿cómo lo harías? ¿Qué debería hacer el guión? ¿Debería descubrir qué programa está utilizando más memoria y/o CPU y eliminarlo? Preferiría adoptar un enfoque más sofisticado porque en ciertos casos la aplicación que usa más memoria o CPU puede ser algo que necesito mantener abierta, como si estoy trabajando en Firefox y eliminarla podría causar la pérdida de datos. Estoy escribiendo. Puedo proporcionar al script una lista de aplicaciones que son menos importantes, para que pueda ejecutar esa lista y evaluar si están consumiendo suficiente memoria como para que valga la pena eliminarlas.

4.) ¿Ayudaría aumentar el tamaño de la partición SWAP?

Respuesta1

Su cuello de botella es lo que aparece al máximo en un administrador de tareas como htop. En este caso, parece que la RAM está repleta de pestañas de Chrome. Afortunadamente,Chrome viene con su propio administrador de tareasque te permite ver y eliminar qué pestaña está acaparando tu RAM:

Administrador de tareas de Google Chrome

Extensiones de Chrome comoEl gran suspensoryPestañas perezosasTambién ayuda a ahorrar RAM.

Si Chrome no es el culpable y necesita un sistema que responda rápidamente, consulte:¡Apurarse! ¡Ubuntu se está quedando rápidamente sin RAM y mi computadora está a punto de congelarse por completo! ¿Qué comando me salvará?

información relacionada