When testing MAAS on Bionic, we noticed sluggish performance that we could not immediately explain.
After comparing the results from a run of the test suite on Xenial to a run on Bionic, we determined that the slowdowns had to do with DNS lookups. In particular, if MAAS attempts to resolve a hostname using getaddrinfo() and the call fails, on Xenial the negative result is returned in a fraction of a second. On Bionic, the negative result is returned in ~1.6 seconds, according to some measures.
### Results on Xenial ###
time ./test not-a-real-hostname
Trying to resolve: not-a-real-hostname
getaddrinfo errno: Success
getaddrinfo() return value: -2 (Name or service not known)
real 0m0.015s
user 0m0.000s
sys 0m0.000s
### Results on Bionic ###
$ time ./test not-a-real-hostname
Trying to resolve: not-a-real-hostname
getaddrinfo errno: Resource temporarily unavailable
getaddrinfo() return value: -3 (Temporary failure in name resolution)
When testing MAAS on Bionic, we noticed sluggish performance that we could not immediately explain.
After comparing the results from a run of the test suite on Xenial to a run on Bionic, we determined that the slowdowns had to do with DNS lookups. In particular, if MAAS attempts to resolve a hostname using getaddrinfo() and the call fails, on Xenial the negative result is returned in a fraction of a second. On Bionic, the negative result is returned in ~1.6 seconds, according to some measures.
### To run the test ###
git clone https:/ /github. com/mpontillo/ test-getaddrinf o
cd test-getaddrinfo
make
### Results on Xenial ###
time ./test not-a-real-hostname
Trying to resolve: not-a-real-hostname
getaddrinfo errno: Success
getaddrinfo() return value: -2 (Name or service not known)
real 0m0.015s
user 0m0.000s
sys 0m0.000s
### Results on Bionic ###
$ time ./test not-a-real-hostname
Trying to resolve: not-a-real-hostname
getaddrinfo errno: Resource temporarily unavailable
getaddrinfo() return value: -3 (Temporary failure in name resolution)
real 0m1.609s
user 0m0.004s
sys 0m0.000s