BIND (named) CPU 점유율이 지나치게 높은데 이유를 알 수 있을까요?

viper9의 이미지

CentOS 6.3으로 서버를 운영하고 있습니다.

한대의 서버에 네임서버, FTP서버, 웹서버, SVN서버 등을 운영하고 있고 여기서 작동하는 사이트는 약 60여개의 개인홈페이지입니다. 상업적인 용도로 쓰는 서버는 아닙니다. SVN와 개인적인 자료를 보관하고자 서버를 구축하였고 약 50여개 정도 무료호스팅 계정을 받고 있습니다.

Cacti로 모니터링을 해오고 있는데 CPU 점유율이 지나치게 높아 문의드립니다.

아래는 top 명령어 실행결과입니다.

top - 13:38:26 up 5 days, 23:15, 1 user, load average: 0.80, 0.56, 0.22
Tasks: 217 total, 1 running, 216 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.6%us, 22.5%sy, 0.0%ni, 70.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3878700k total, 3539848k used, 338852k free, 149180k buffers
Swap: 4190200k total, 55584k used, 4134616k free, 961136k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16346 named 20 0 382m 24m 2556 S 133.0 0.6 9411:56 named
56347 apache 20 0 793m 68m 11m S 3.0 1.8 1:04.47 httpd
1 root 20 0 19356 1148 924 S 0.0 0.0 0:00.76 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.14 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:24.70 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.01 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.14 watchdog/0

named 데몬이 133%네요. 네임서버가 왜이렇게 많이 잡아먹는지 이유를 알수가 없습니다.

서버용도에 비해 사양이 부족한 것도 아닙니다. 프로세서는 Xeon E3-1220 쿼드코어에 4기가 메모리이구요.

현재 서버는 모든 부분 문제 없이 작동 중이고 네임서버 역시 문제 없이 작동 중입니다. 속도 저하 같은 부분 없구요..

yum 업데이트도 모두했고 서버도 재부팅했는데도 점유율이 내려가질 않습니다.

검색해보니 http://kldp.org/node/718 이 글이 저와 같은 현상인것 같은데 뾰족한 수가 없네요.

설치된 패키지는

Installed Packages
bind.x86_64 32:9.8.2-0.10.rc1.el6_3.2 @updates
bind-chroot.x86_64 32:9.8.2-0.10.rc1.el6_3.2 @updates
bind-libs.x86_64 32:9.8.2-0.10.rc1.el6_3.2 @updates
bind-utils.x86_64 32:9.8.2-0.10.rc1.el6_3.2 @updates

입니다.

zone 파일 등에도 문제가 없다고 나오구요.

BIND의 버그인지 혹은 다른 이유가 있는지 궁금합니다.

김정균의 이미지

흠.. named 실행 시간이 이상하군요 :-) 업타임이 얼마나 되시나요?

일단 오작동이 아니라면, dns로 이상 쿼리가 들어오는 걸 수도 있습니다. dnstop이나 또는 network capture tool로 53번 포트를 모니터링 한번 해 보세요. 저도 같은 버전 사용하고, 아마 DNS query는 님의 서버 보다 엄청나게 많이 들어올 것 같은데 (정상적인 상황에서..) 제 가 관리하는 DNS와 상황이 다른 것으로 보아서는 DNS 자체 보다는 DNS에 영향을 주는 것이 있지 않을까 싶습니다.

그리고, 시스템에 nscd를 구동해 보시는 것도 한 방법일 듯 싶습니다.

viper9의 이미지

제가 문제상황을 찾아보려고 named를 재시작을 자주했어서 업타임은 제멋대로입니다.

예상하신대로 oops.org에 비하면 새발의 피인 아주 작은 서버입니다. ㅠㅠ

일단 nscd가 무엇인가해서 찾아보니 네임서버 캐쉬데몬인가보네요. yum으로 설치해서 서비스 시작해두었습니다.

(nscd를 설치하고 named와 nscd 모두 재시작 한번씩 해준다음 top을 해봤는데도 결과는 별로 달라진게 없네요.. 좀 지켜봐야겠죠?)

dnstop은 yum에 아직 없군요. 흑흑... dnstop 설치해서 한번 봐야겠네요.

viper9의 이미지

dnstop으로 살펴보았습니다.

dnstop -4 -l 3 eth1을 해봤더니 쿼리수는 다 합쳐봐야 1분에 100도 채 안됩니다. (그중 80%는 서버아이피(로컬)에서 들어오는 것입니다.)

dnstop -4 -l 3 -f unknown eth1을 해보니 그냥 0이네요.

어디가 문제인지 알쏭달쏭하네요.

김정균의 이미지

흠 이상하군요. 해당 버전의 DNS를 oops.org가 아닌 회사에서(아마 oops.org보다 10000배 정도 더 들어 올겁니다.)도 운영중인데 CPU 문제는 없습니다. 혹시 OS와 bind가 최신 업데이트 상태인지도 확인해 보시고 아니라면 update 후에 reboot을 해 보시는 것도 도움이 되지 않을까 싶습니다.

서버를 볼 수 없는 상황에서는 조언을 드릴 수 있는 방법이 제한적이네요 :-)

academic의 이미지

dnstop이란 것도 있었군요. 좋은 정보 감사합니다.

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

artop0420의 이미지

Centos 6버전이면 bind 9.8 사용하실것 같은데요.
9.8버전에서 manage-keys 관련되서 uptime에서는 큰 문제가 없는데
TOP에서 보면 named의 CPU사용율이 높게 나오는 이슈가 있었습니다.

우선 /var/log/messages에 manage-keys not found와 관련된 내용 있는지 보고
폴더 만들고 named로 권한 잡아주면 되는데, 정확한 조치 방법은 저도 가물가물하네요.
구글링을...ㅋㅋㅋ

--- 나는요? ---

리눅스와 솔라리스 그리고 윈도우의 껍데기만 맛보고 있습니다.

viper9의 이미지

해결했습니다. 감사합니다.

꽤 오래전에 올린 글인데 답글을 달아주셨네요.

bind 9.8 버전이 맞고 답글 올려주신 내용이 원인이 맞았습니다.

인터넷을 검색해보니 해결 방법이 나와있네요.

http://ifull.co.kr/xe/b_linux/251030 에 해결 방법이 있네요.

/var/log/message
Sep 14 11:38:20 ns named-sdb[8771]: /var/named/dynamic/managed-keys.bind.jnl: create: file not found
Sep 14 11:38:20 ns named-sdb[8771]: managed-keys-zone ./IN: sync_keyzone:dns_journal_open -> unexpected error
Sep 14 11:43:54 ns named-sdb[8986]: /var/named/dynamic/managed-keys.bind.jnl: create: permission denied
Sep 14 11:43:54 ns named-sdb[8986]: managed-keys-zone ./IN: sync_keyzone:dns_journal_open -> unexpected error
이런식으로
create: file not found 또는 create: permission denied 일때의 처리 방법
 
CentOS6.4  bind-9.8.2 에서 처리함.
# mkdir -p /var/named/chroot/var/named/dynamic
# touch /var/named/chroot/var/named/dynamic/managed-keys.bind
# chmod -R 777 /var/named/chroot/var/named/dynamic
bind가 설치된 위치를 확인하고 .zone 파일의 위치에 dynamic 디렉토리를 생성해서 처리했다.

방법으로 해결했습니다.

파일 작성후 권한 주고 named를 두번 재시작하니 해결되었습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.