OOM 킬러가 syslog에 pid에 대한 정보를 저장한다는 것을 알고 있지만, 종료된 프로세스의 cmdline과 소유자도 수집하고 싶습니다.
정보는 디버깅 및 ELK 표시기와 관련이 있으며 PID만 도움이 되지 않습니다. 이 작업을 수행할 수 있는 도구나 쉬운 방법을 찾을 수 없습니다.
어떤 좋은 아이디어라도 있나요?
답변1
echo 1 > /proc/sys/vm/oom_dump_tasks
이는 메모리 부족 오류 시 커널이 표시할 수 있는 대부분의 정보인 것 같습니다.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
커널이 OOM 종료를 수행할 때 시스템 전체 작업 덤프(커널 스레드 제외) 생성을 허용하고 pid, uid, tgid, vm 크기, rss, nr_ptes, swapts, oom_score_adj 점수 및 이름과 같은 정보를 포함합니다. 이는 OOM 킬러가 호출된 이유를 확인하고, 이벤트를 발생시킨 악성 작업을 식별하고, OOM 킬러가 종료된 작업을 선택한 이유를 확인하는 데 도움이 될 수 있습니다.
0으로 설정하면 정보가 표시되지 않습니다. 수천 개의 작업이 포함된 매우 큰 시스템에서는 각 작업의 메모리 상태 정보를 덤프하는 것이 불가능할 수 있습니다. 이러한 시스템은 정보가 필요하지 않을 때 OOM 조건으로 인해 성능 저하를 겪도록 강요되어서는 안 됩니다.
0이 아닌 값으로 설정되면 OOM 킬러가 실제로 메모리를 소비하는 작업을 종료할 때마다 이 메시지가 표시됩니다.
편집하다
~에 따르면커널에 의해 종료된 프로세스 목록은 어디에서 볼 수 있나요?
여기서 프로세스 회계가 도움이 될 수 있습니다.
간단히 말해서:
apt-get install acct
그런 다음 다음 명령을 시도해 보십시오.
lastcomm
sa
또는 우분투에서:
lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct
바라보다: