

DNS server in Go - Big NTP Pool upgrade - tshtf
http://news.ntppool.org/2012/10/new-dns-server.html

======
dfc
This seems like a great time to prod more folks into joining the pool. If you
have a static IP and a stable machine please consider becoming part of the
pool:

<http://www.pool.ntp.org/en/join.html>

My firewall at home is part of the pool. You can configure how much traffic
you can handle in the manage servers interface. With any decent cable
connection you can set the speed to 768Kbit and never notice the traffic (ntp
is just tiny udp datagrams).

While we are at it lets go through /etc/ntp.conf and remove any references to
stratum one servers. With a recent version of ntp you can replace all of your
server lines with:

    
    
      pool 0.CC.pool.ntp.org iburst
      pool 1.CC.pool.ntp.org iburst
      pool 2.CC.pool.ntp.org iburst
      pool 3.CC.pool.ntp.org iburst
    

Where CC is your country code {us,ca,de,mx,fr,etc}. I decided to err on the
side of caution and give an example that will work with any reasonably recent
version of ntp. With the most recent stable release the following one line
will suffice:

    
    
      pool CC.pool.ntp.org iburst
    

That one line will work for Mountain Lion, debian/unstable and the most recent
ubuntu release and ntp will automatically poll more servers as needed.

More info on using the pool can be found here:

<http://www.pool.ntp.org/en/use.html>

~~~
askbjoernhansen
Thanks dfc. I made a note for myself to update the site to mention/recommend
the pool statement as well:

<https://github.com/abh/ntppool/issues/69>

------
wallrat
Miek Gieben's [1] DNS library [2] is truly excellent. I use it at Port 6379
for an authoritative DNS server, looking up Redis instances [3]. I too have
found Go surprisingly productive and enjoyable to code, and our servers seem
very stable so far.

[1] <http://www.miek.nl/>

[2] <https://github.com/miekg/dns>

[3] [https://port6379.com/blog/2012/09/03/using-dns-to-find-
insta...](https://port6379.com/blog/2012/09/03/using-dns-to-find-instances)

------
simonster
> Since mid-September, twenty of the name servers have been running the new
> software and except for a bit of trouble on i386 (32-bit) and low-memory
> systems, it's been running very smoothly.

So is <http://code.google.com/p/go/issues/detail?id=909> a real-world problem?

~~~
jamesaguilar
If 32-bit, low-memory machines are part of your world, I would say obviously
yes.

~~~
nwmcsween
4GB of addressable memory per process is hardly low memory, x32 was recently
merged into Linux so I doubt it's going away anytime.

------
Mr_T_
How can this even exist without generics, template meta-programming or a
turing complete type system? I doubt that they know what they're doing.

~~~
phoboslab
The first time I read one of these comments by you on reddit[1] I thought it
was sincere - replies to it suggested I was not alone, although I was
surprised that one was on your side.

So, I guess your sarcasm was a bit too subtle. This one is better :)

[1]
[http://www.reddit.com/r/programming/comments/10zsz4/i_wrote_...](http://www.reddit.com/r/programming/comments/10zsz4/i_wrote_my_first_nes_emulator_written_in_go/c6ih7io)

~~~
djhworld
FYI I'm the guy that replied to that, I was really interested to see how the
OP of that post got around it.

------
cygwin98
For people searching for performance benchmarks like me, here are the numbers
I dug around from the post ( <http://geo.bitnames.com>)

 _If you need less than 200 DNS lookups per second per DNS server the Perl
version is fine and might be a little easier to setup. The Go version is much
faster (in prodution we've seen it do 5-6000 requests a second on commodity
hardware and even virtual servers)._

Is 6000 rps a high number for a DNS server? Let me do a back of the envelope
calculation: one simple dns request (assuming udp here) response msg size is
100bytes, 6000rps x 100bytes /1024/1024 x 8 = 4.69mbps. Even we consider the
request msg size is equal to that of response msg, the throughput is still
9.38mbps, far from saturating the network pipe. It sounds to me there is still
space for improvement.

~~~
DigitalJack
Was it implied that the 6000 requests was peak performance of the software, or
was it just the current max usage they've seen?

~~~
cygwin98
I suppose it's the latter. That number is pretty much hardware-specific,
though it would give us a bit more details if they mentioned the hardware
profile.

~~~
askbjoernhansen
The DNS servers are (mostly) virtual machines on all sorts of hardware. In
many cases I don't actually know the exact hardware specs or how much other
load the boxes have.

<http://www.pool.ntp.org/dns-server.html>

------
knodi
I'm in love with Go. The more I use it the more i fall in love with it.

~~~
frou_dh
I've seen a number of near-identical comments, but they're not interesting
unless you expand on why.

~~~
eternalban
In no particular order:

    
    
       - new, shiny, toy (boys will be boys)
       - sufficiently different (allows for think different moments)
       - sufficiently subtle (does promote deep think moments)
       - bipolars are sexy (Go is seriously bipolar.)
       - pedigree (Go is something of a pedagogue)

------
bgentry
Source code linked by the OP: <https://github.com/abh/geodns/>

------
jnazario
pretty neat. hopefully this will get some tractions.

thanks for sharing.

