우리 기관의 Ubuntu Linux 노드에 액세스할 수 있습니다. 노드는 그룹 간에 공유되지만 일반적으로 해당 특정 노드를 사용하는 유일한 사람은 나입니다.
노드의 8개 CPU 모두에서 계산을 병렬로 실행하고 있습니다. 계산이 실행 중이지만 활성 프로세스 보기를 사용하면 top
사용자 man
및 명령이 기록된 추가 프로세스가 표시됩니다 mandb
. 에 따르면, 이 mandb
명령은 볼 때마다 실행되는 것으로 보이며 , 상당한 양의 CPU 성능( )과 메모리( )를 top
차지하는 것으로 보입니다 .6 %CPU
2.5 %MEM
top
인터넷에서 찾아보니 이런 내용인 것 같습니다.
mandb
일반적으로 사람이 유지 관리하는 인덱스 데이터베이스 캐시를 초기화하거나 수동으로 업데이트하는 데 사용됩니다.
그렇다면 왜 mandb
이 노드에서 계속 실행됩니까? (다른 노드에 따르면 top
내 에이전시 클러스터 내의 다른 노드에서는 이 문제가 발생하지 않습니다.) 왜 mandb
항상 실행되어야 합니까?아니요현재 매뉴얼을 보고 계시나요?
이 프로세스가 안전하게 종료할 수 있는 가상 프로세스일 가능성이 있습니까 kill
?
답변1
mandb
연속작동이 비정상입니다. 일반적으로 mandb
하루에 한 번 실행예약 된 일들설치된 매뉴얼 페이지의 색인 업데이트, 형식화된 매뉴얼 페이지의 캐시 구축 또는 정리와 같은 유지 관리 작업을 수행하는 작업입니다. 일일 작업은 몇 초 안에 실행되어야 합니다. 매뉴얼 페이지가 많고 디스크가 느린 경우 몇 분이 걸릴 수 있습니다. 작업을 실행하는 데 이보다 시간이 더 오래 걸리면 문제가 발생한 것입니다.
6% CPU는 높지 않지만 프로세스가 디스크 I/O를 수행 중일 수 있습니다. 클러스터 노드의 메모리 중 2.5%가 높다고 들립니다. 작업이 잘못 구성되어 있어서는 안되는 위치를 찾거나, 프로그램에 버그가 있거나 mandb
, 하드웨어 오류로 인해 mandb
작업이 중단될 수 있습니다.
/etc/crontab
또는에서 cron 스크립트를 볼 수 있습니다 /etc/cron.*/*
(정확한 위치는 배포판에 따라 다르며 /etc/cron.daily/man-db
가능한 /etc/cron.weekly/man-db
위치입니다). mandb
프로세스를 자세히 살펴보면 프로세스를 실행 pstree | less
하고 검색하여 호출되는 내용을 파악할 수 있습니다 . mandb
실행 ps ww 12345
(여기서 12345는 문제가 있는 프로세스의 PID임)하면 전체 명령줄이 표시됩니다.
이 문제를 직접 진단할 수는 있지만 루트 액세스 없이는 문제를 해결할 수 없습니다. 루트 권한이 있는 경우 프로세스를 안전하게 종료할 수 있습니다 ( 루트가 된 방법에 따라 또는 mandb
명령을 사용하여 ). 어쨌든 시스템 관리자에게 연락하여 증상을 설명하십시오. 사용 가능한 모든 정보(예: 호출된 프로그램 , 사용된 매개변수 등)를 제공합니다.sudo pkill mandb
su -c 'pkill mandb'
mandb
답변2
cron 스크립트를 확인했는데, 이는 man 인덱스를 업데이트하고, 수동 검색 속도를 높이고, 매일 실행되며, 안전하게 종료할 수 있는 명령일 뿐입니다.
마음에 안드시면 그냥 꺼주세요chmod -x /etc/cron.daily/man-db
답변3
이것은 최신 버전의 mandb에서 수정되었을 수 있는 Heisenbug입니다. 이는 손상된 맨페이지, 파일 시스템 순회 순서 및 mandb의 증분 재구축이 매우 느린 전체 재구축으로 바뀌었다는 사실과 관련이 있었습니다(~1,500만 페이지 오류, 회전하는 녹이 몇 분 소요됨).
문제를 해결하려면 다음을 실행하세요.
sudo mandb --no-purge --debug
--create
그리고 그것의 유무에 관계없이 mandb를 실행하지 마십시오 --no-purge
. 그런 다음 최신 버전인지 확인하고 cjwatson이 볼 수 있는 버그를 보고하세요.
반면에 문제를 해결하려면 다음을 실행하세요.
echo 'man-db man-db/auto-update boolean false' |sudo debconf-set-selections
이렇게 하면 man-db cronjob(매일 실행)과 dpkg 트리거(패키지가 설치될 때 실행)가 비활성화됩니다.