컴퓨터가 작동을 멈추면 일반적으로 터미널로 가서 top을 실행하여 무엇이 메모리를 차지하고 해당 프로세스를 종료하는지 알아내면 문제를 쉽게 해결할 수 있습니다. 때로는 심하게 얼어붙을 때 어려울 수 있습니다. 터미널에 들어가려면 CTRL
+ ALT
+를 눌러야 합니다 . F1
또한 xkill을 실행하기 위한 키보드 단축키 설정이 있어 작동을 멈추는 GUI 앱을 종료할 수 있어 편리합니다.
수년 동안 이 문제를 겪었음에도 불구하고 제가 처리 방법을 찾지 못한 것은 응답하지 않는 브라우저 스크립트입니다. 가끔 내 컴퓨터가 너무 심하게 멈춰서 마우스 포인터를 움직일 수 없게 되고, 결국 컴퓨터가 풀리고 브라우저 중 하나(예전에는 항상 Firefox였고 최근에는 Chrome임)에서 자바스크립트를 알리는 팝업이 표시되는 것을 볼 수 있습니다. 스크립트가 응답하지 않습니다. 종료할 수 있는 옵션이 제공되지만 종료 버튼을 눌러도 문제가 해결되지 않는 것 같습니다.
이 문제를 어떻게 처리합니까? 또한 일반적으로 메모리 과부하 문제를 어떻게 처리합니까? 저는 그냥 CTRL
++ ALT
를 누르고 T
top을 실행한 다음 어떤 프로그램이 가장 많은 메모리를 사용하고 있는지 확인한 다음 종료하곤 했습니다. 하지만 이는 많은 단계를 거쳐야 하고 컴퓨터가 정지되면 단일 단계에 오랜 시간이 걸릴 수 있습니다. 그래서 한 단계로 킬 스위치를 설정하거나 시스템을 정지시키려는 모든 프로그램을 종료하는 데몬을 설정하는 등 더 나은 방법을 찾고 있습니다.
또한 어떤 프로그램이 문제를 일으키는지 알아내는 가장 좋은 방법은 무엇입니까? top은 때때로 CPU를 과도하게 잡아먹는 프로그램이 없음을 표시하기 때문에 항상 보기가 쉽지는 않습니다. 하지만 아래로 스크롤하면 이 프로그램의 인스턴스가 약 50개 정도 실행되고 있는 것을 볼 수 있으므로 결합된 CPU를 볼 수 있다면 훨씬 더 좋을 것입니다. 프로그램의 사용법. Firefox와 Chrome이 두 가지 주요 원인이며 때로는 sublime-text-3입니다(아마 탭이 너무 많이 열려 있기 때문일까요?).
그래서 다음 명령을 찾았습니다.
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
지금 이 목록을 제공합니다.
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
내 컴퓨터가 지금은 정지되지 않아서 괜찮은데, Firefox 자체를 사용하려고 하면 정지됩니다. 나는 많은 탭을 열어 두는 경향이 있습니다. 이것이 상단을 실행할 때 크롬과 파이어폭스 인스턴스가 그렇게 많이 보이는 이유입니까?
htop은 top보다 훨씬 더 많은 옵션을 제공하므로 문제를 진단하는 데 더 나은 도구일 것입니다. 이 모든 것에 대해 제가 이해하지 못하는 몇 가지 사항이 있습니다. 첫째, 컴퓨터가 정기적으로 정지되는 경우 %CPU 또는 %MEM이 더 중요합니다. htop을 사용하면 둘 중 하나로 정렬할 수 있습니다. 메모리 사용량을 기준으로 정렬할 때 표시되는 내용은 다음과 같습니다.
CPU 사용량을 기준으로 정렬하면 다음과 같은 결과가 나옵니다.
그래서 ps를 실행하면서 본 것처럼 Firefox와 Chrome이 메모리의 대부분을 차지하고, compiz가 CPU의 대부분을 차지합니다. 시스템 동결을 해제할 때 살펴봐야 할 다른 중요한 요소가 있습니까? 예를 들어, 프로세스가 작동하기 위해 실행된 시간이 다른 것보다 compiz가 더 오래 실행되었음을 알 수 있습니다.
킬 스위치에 관해서는 다른 사람이 쓴 것을 찾았습니다.
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
하지만 그것이 어떻게 작동하는지, 무엇을 하는지 100% 확신할 수는 없습니다. 내가 실행할 때 :
uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g"
149, 179, 178과 같은 숫자가 반환됩니다. 가동 시간 매뉴얼을 읽었지만 시스템 작동 중지를 방지하는 데 이 매뉴얼이 얼마나 유용한지 이해할 수 없습니다.
htop에 표시된 앱을 사용하여 상위 메모리에서 볼 수 있는 프로세스 ID가 아닙니다.
가동 시간 자체를 실행하면 다음과 같은 결과를 얻습니다.
17:49:53 up 1 day, 11:09, 2 users, load average: 3.16, 2.45, 2.03
그래서 내 시스템은 17.49시간 동안 가동되었습니다. 내 컴퓨터 측면에서 로드 평균이 무엇을 의미하는지 모르겠습니다. 최근에 내 동생이 사무실에 사용하지 않은 컴퓨터를 가지고 있었기 때문에 이 컴퓨터를 선물로 받았는데, 사양을 확인해보니 다음과 같습니다.
$ 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
나는 꽤 충격을 받았습니다. 그것은 짐승, 8개의 CPU입니다. 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
12Gb, 맙소사, 전혀 몰랐습니다. 내 오래된 노트북에는 2GB가 있었습니다. 그래서 지금은 왜 이렇게 얼어붙는지 미스터리입니다.
그래서 제가 궁금한 점은 다음과 같습니다.
1.) 시스템 속도를 저하시키고 정지시키는 원인을 찾는 가장 좋은 방법은 무엇입니까?
2.) 실제 브라우저를 종료하지 않고도 응답하지 않는 특정 스크립트 상황을 어떻게 처리합니까? NoScript와 같은 플러그인을 사용하지만 종종 JavaScript를 활성화해야 할 때가 있습니다. 또한 특정 플러그인도 스크립트를 사용합니다. 그들을 죽여도 아무것도 해결되지 않는 이유는 실제로 그렇게 죽일 수 없기 때문입니까? 브라우저를 통해 검색하고 응답하지 않는 스크립트가 있는 페이지를 실행하는 탭을 찾은 다음 탭을 닫고 다시 시작하는 스크립트를 작성하는 방법이 있습니까? 아니면 컴퓨터가 다시 제대로 실행될 수 있도록 스크립트 자체를 종료하는 것이 더 낫습니까? 응답하지 않는 스크립트가 전체 시스템을 정지시키는 이유를 모르겠습니다. 브라우저가 충돌한 스크립트를 실행하려고 할 때 과도한 메모리를 소모하는 것 같습니다.
2.) 특히 마우스 포인터를 움직일 수 없는 최악의 시나리오에서 시스템 고정을 해제하는 가장 좋은 방법은 무엇입니까? 킬 스위치에 연결된 단축 키 콤보가 좋을까요?
3.) 킬 스위치를 만들려면 어떻게 하시겠습니까? 스크립트는 무엇을 해야 합니까? 가장 많은 메모리 및/또는 CPU를 사용하고 있는 프로그램을 찾아 종료해야 합니다. 저는 좀 더 정교한 접근 방식을 선호합니다. 어떤 경우에는 대부분의 메모리나 CPU를 사용하는 앱이 계속 열려 있어야 할 수도 있기 때문입니다. 예를 들어 Firefox에서 작업 중이고 해당 앱을 종료하면 데이터가 손실될 수 있습니다. 내가 쓰고 있어요. 덜 중요한 앱 목록을 스크립트에 제공할 수 있으므로 해당 목록을 실행하고 해당 앱이 종료할 가치가 있을 만큼 충분한 메모리를 먹고 있는지 평가할 수 있습니다.
4.) SWAP 파티션의 크기를 늘리면 도움이 될까요?
답변1
병목 현상은 htop
. 이 경우 Chrome 탭으로 인해 RAM이 넘쳐나는 것처럼 보입니다. 다행스럽게도,Chrome에는 자체 작업 관리자가 제공됩니다.이를 통해 RAM을 많이 차지하는 탭을 확인하고 삭제할 수 있습니다.
다음과 같은 Chrome 확장 프로그램그레이트 서스펜더그리고게으른 탭RAM 절약에도 도움이 됩니다.
Chrome이 원인이 아니고 빠르게 반응하는 시스템이 필요한 경우 다음을 참조하세요.서두르다! Ubuntu의 RAM이 빠르게 부족해져서 컴퓨터가 완전히 정지될 예정입니다! 어떤 명령이 나를 구해줄까요?