On Mon, 24 Jul 2000, John Horne wrote:
> ----------
> 24. Added an in-memory cache of DNS lookups that fail or give DNS failures
> such as timeouts. This means that a message with many addresses at the same
> domain that times out won't take an excessively long time to route. There is
> no caching for successful lookups - we rely on resolver and name server
> caching in that case.
> ----------
>
> Does this refer to actual name server problems - for example ones giving
> timeouts - or is this a form of negative-caching (whereby the DNS entry just
> doesn't exist)? If the latter is this going to cause a problem for local
> caching servers which use their own negative-caching? (I'm thinking aloud
> here :-))
I do not think it will cause any problems. The reason I added it was to
improve performance on systems that are handling mailing lists with
1000's of users, many of whom are in the same domain. Exim will attempt
a DNS lookup for that domain many times as it routes each address. [*]
If that domain's nameservers are down, leading to timeouts, there will
be a rather long delay. By caching the results of the lookup, this does
not happen.
When I implemented it, I figured I might as well cache all non-success
results of DNS lookups, so yes, it is doing negative caching too - but
all of this applies only within a single Exim process, so the cache is
only kept for a short time.
----------
[*] Originally, if Exim came across a domain it had previously routed,
it just copied the routing information. However, when the routers
became more complicated, with the addition of "senders" and "condition"
and "local_part", it had to stop doing this, because there is no
guarantee that the same domain will route the same way. In fact,
multiple successful DNS lookups don't usually cost very much because of
the name server and/or resolver caching. (Where "successful" here means
"gets a definite answer".)
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.