Como você lida com scripts de navegador que não respondem?

Como você lida com scripts de navegador que não respondem?

Quando meu computador congela, geralmente é muito fácil resolver o problema entrando no terminal e executando top para descobrir o que está consumindo a memória e interrompendo o processo. Às vezes pode ser difícil quando está muito congelado, tenho que apertar CTRL+ ALT+ F1para entrar no terminal. Também é útil ter uma configuração de atalho de teclado para executar o xkill, para que eu possa encerrar aplicativos GUI que sei que estão congelando.

O que ainda não descobri como lidar, mesmo depois de anos tendo esse problema, são esses scripts de navegador que não respondem. Às vezes meu computador congela tanto que não consigo mover o ponteiro do mouse, e eventualmente ele descongela e vejo que um dos navegadores (sempre foi o Firefox, ultimamente tem sido o Chrome), aparecerá um pop-up dizendo que um javascript o script não está respondendo. Isso me dá a opção de matá-lo, mas apertar o botão matar nunca parece resolver o problema.

Como você lida com esse problema? Além disso, como você lida com problemas de sobrecarga de memória em geral? Eu costumava apenas apertar CTRL+ ALT+ T, executar top e ver qual programa estava usando mais memória e depois matá-lo, mas são muitas etapas e quando o computador está travado, uma única etapa pode levar muito tempo. Então, estou procurando maneiras melhores, como configurar um killswitch para fazer isso em uma única etapa ou configurar um daemon que elimine qualquer programa que esteja prestes a congelar a máquina.

Além disso, qual é a melhor maneira de descobrir qual programa está causando o problema? top nem sempre é fácil de ver porque às vezes top não mostra nenhum programa consumindo CPU excessiva, mas se eu rolar para baixo vejo que há cerca de 50 instâncias deste programa em execução, então seria muito melhor se eu pudesse ver a CPU combinada uso do programa. Firefox e Chrome são os dois principais culpados, ocasionalmente sublime-text-3 (talvez isso seja devido a muitas abas abertas?).

Então encontrei este comando:

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

O que dá esta lista agora:

  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

Meu computador não está congelado agora, então está tudo bem, mas o próprio Firefox está congelando quando tento usá-lo. Costumo manter muitas abas abertas. É por isso que vejo tantas instâncias do Chrome e do Firefox quando executo o top?

Vejo que o htop oferece muito mais opções do que o top, então provavelmente é uma ferramenta melhor para diagnosticar o problema. Há algumas coisas que não entendo sobre tudo isso, em primeiro lugar, o que é mais importante% CPU ou% MEM quando se trata de seu computador travar regularmente. htop permite classificar por qualquer um deles. Aqui está o que ele me mostra quando classifico por uso de memória:insira a descrição da imagem aqui

e aqui está o que obtenho quando classifico por uso da CPU:insira a descrição da imagem aqui

Então, como vi ao executar o ps, o firefox e o chrome estão ocupando a maior parte da memória, e o compiz está ocupando a maior parte da CPU. Existem outros fatores importantes a serem observados quando se trata de descongelar seu sistema? Por exemplo, se o tempo que um processo está em execução entra em jogo, vejo que o compiz está em execução há mais tempo do que qualquer outra coisa:insira a descrição da imagem aqui

Quanto ao killswitch, encontrei um que outra pessoa escreveu:

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

Mas não tenho 100% de certeza de como funciona ou o que faz. Quando corro:

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

Ele retorna números como 149, 179, 178. Li o manual de tempo de atividade e não consigo entender como ele é útil para evitar o congelamento do sistema.

Eles não são IDs de processo que vejo em nenhuma das principais memórias usando aplicativos mostrados por htop.

Executando o tempo de atividade por si só, eu entendo o seguinte:

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

Portanto, meu sistema está ativo há 17,49 horas. Não sei o que significa a média de carga em termos do meu computador. Recebi este computador do meu irmão recentemente, já que ele tinha um computador não utilizado em seu escritório, quando verifico as especificações:

$ 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

Estou muito chocado, é uma fera, 8 CPUs. E a 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, meu Deus, não fazia ideia. Meu laptop antigo tinha 2 Gb. Portanto, é um mistério por que está congelando assim agora.

Então, o que estou pensando é:

1.) Qual é a melhor maneira de descobrir o que está causando lentidão e congelamento do sistema?

2.) Como você lida com essa situação específica de script sem resposta sem ter que encerrar o navegador real? Eu uso plugins como NoScript, mas muitas vezes preciso habilitar o javascript. Além disso, certos plug-ins também usam scripts. Por que matá-los nunca resolve nada, é porque eles não podem ser mortos assim? Haveria uma maneira de escrever um script que pesquisasse em seus navegadores e descobrisse qual guia está executando a página com o script que não responde, feche e reinicie a guia? Ou melhor ainda, apenas encerrar o script de uma forma que permita que o computador funcione corretamente novamente? Não sei por que um script que não responde congela todo o meu sistema. Acho que o navegador consome memória excessiva ao tentar executar o script com falha.

2.) Qual é a melhor maneira de descongelar seu sistema, especialmente nos piores cenários, quando você não consegue mover o ponteiro do mouse. Um combo de teclas de atalho conectado a um killswitch seria o caminho a seguir?

3.) Para fazer um kill switch, como você faria isso? O que o script deve fazer? Deve descobrir qual programa está usando mais memória e/ou CPU e eliminá-lo. Eu preferiria adotar uma abordagem mais sofisticada porque, em certos casos, o aplicativo que está usando mais memória ou CPU pode ser algo que preciso manter aberto, como se estivesse trabalhando no Firefox e matá-lo poderia causar perda de dados. Estou escrevendo. Posso fornecer ao script uma lista de aplicativos que são menos importantes, para que ele possa percorrer essa lista e avaliar se eles estão consumindo memória suficiente para valer a pena matá-los.

4.) Aumentar o tamanho da partição SWAP ajudaria?

Responder1

Seu gargalo é o que parece estar no limite em um gerenciador de tarefas como o htop. Nesse caso, parece que a RAM está transbordando de guias do Chrome. Felizmente,Chrome vem com seu próprio gerenciador de tarefasque permite que você veja e elimine qual guia está consumindo sua RAM:

Gerenciador de tarefas do Google Chrome

Extensões do Chrome comoO Grande SuspensoreGuias preguiçosastambém ajuda a economizar RAM.

Se o Chrome não for o culpado e você precisar de um sistema responsivo rápido, veja:Pressa! O Ubuntu está ficando sem RAM rapidamente e meu computador está prestes a congelar completamente! Qual comando me salvará?

informação relacionada