[nsd-users] nsd utilize 100% cpu

Michael Tokarev mjt at tls.msk.ru
Thu Dec 10 15:58:18 UTC 2009


Vadim wrote:
> Hi there.
> 
> Can anybody help me or explain what happen?
> 
> I run nsd with 40к domain zones.
> And very often nsd utilize 100%cpu for a long time.
> For example, when I run nsdc patch, command have already finished but 
> process nsd still running and use 100% cpu.

Can you please specify at least version of nsd you're running?

> When I do strace I see:
> gettimeofday({1260459192, 450604}, NULL) = 0
> pselect6(8, [7], [7], [], {4, 549396000}, {NULL, 8}) = 1 (out [7], left {4, 549396000})
> write(7, "\10\0\0\0\0\17\1\t\3\10\5\0\4nw-r\2ru\0", 21) = 21
> gettimeofday({1260459192, 461029}, NULL) = 0
> pselect6(8, [7], [7], [], {4, 538971000}, {NULL, 8}) = 1 (out [7], left {4, 538971000})
> write(7, "\10\0\0\0\0\26\1\20\3\17\f\0\vnw-normativ\2ru\0", 28) = 28
> gettimeofday({1260459192, 471457}, NULL) = 0

mchost? :)

And what is the fd#7?  Is it the database file?  What does lsof say?
How large the resulting db file is?

Apparently nsd writes each domain label separately, without any attempt
to batch writes.  It's much better than writing by single char as some
other programs are doing but worse still than batching writes in at least
512byte blocks like stdio is doing.

> And even after 20 minutes after "nsd patch" have finished, nsd process 
> still use 100% cpu.

How long it takes total?

/mjt



More information about the nsd-users mailing list