편집하다

편집하다

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

바라보다:

관련 정보