BIND 9.3.2 Memory Leak?
Ender Alexander Mujica Díaz
emujica at cantv.net
Wed Jul 26 13:27:36 UTC 2006
Here you can find all about max-cache-size.
http://www.zytrax.com/books/dns/ch7/hkpng.html#max-cache-size
We have this parameter in 80% of the physical memory
http://cr.yp.to/djbdns/blurb/cache.html
Ender Alexander Mujica Díaz wrote:
> La causa por la que BIND se consume toda la memoria y que luego genera
> fallas en los DNS se debe a que por defecto el caché de la aplicación
> no tiene limite para el cache lo cual hace que progresivamente se vaya
> consumiendo toda la memoria fisica, luego la virtual hasta que
> comienza a tener fallas.
>
> *"BIND keeps growing, and growing, and growing. BIND has no limits on
> cache size; it tries to cache every record until the record expires.
> Under heavy load, BIND will chew up all your physical memory, start
> thrashing, chew up all your virtual memory, and then commit hara-kiri,
> if it doesn't dump core first."
>
> "According to the BIND company, BIND 9 stays within a memory resource
> limit without crashing. Unfortunately, when the cache fills up, BIND 9
> discards /new/ cache entries. Performance drops dramatically. The
> server begins failing under moderate loads."*
>
> Para resolver esto lo que haremos es limitar la máxima cantidad de
> memoria que usa el cache de BIND al 80% (1.6GB) del total (2GB) en la
> sección
> "options" a través del parámetro *max-cache-size.*
>
> A continuación la descripción del parámetro:
>
> *max-cache-size* defines the maximum amount of memory to use for the
> server's cache, in bytes (case insensitive shortforms of k or m are
> allowed). When the amount of data in the cache reaches this limit, the
> server will cause records to expire prematurely so that the limit is
> not exceeded. In a server with multiple views, the limit applies
> separately to the cache of each view. The default is unlimited,
> meaning that records are purged from the cache only when their TTLs
> expire. This statement may be used in view
> <http://www.zytrax.com/books/dns/ch7/view.html> or a global options
> <http://www.zytrax.com/books/dns/ch7/options.html> clause.
>
>
>
>
> Etienne wrote:
>> I'm experiencing what seems to be memory leaks with Bind 9.3.2 after it runs
>> for 60-100 hours. It usually happens when I do a rndc reload.
>> Any of you know how to fix that?
>>
>> Here is what i can see when it crashes:
>> # nslookup
>>
>>> yahoo.com
>>>
>> Server: 127.0.0.1
>> Address: 127.0.0.1#53
>> ** server can't find yahoo.com: SERVFAIL
>>
>>> exit
>>>
>>
>> # top
>> Mem: 525M Active, 256M Inact, 165M Wired, 47M Cache, 111M Buf, 3496K Free
>> Swap: 2048M Total, 60K Used, 2048M Free
>>
>> PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
>> 67330 root 96 0 516M 515M select 79:50 0.00% 0.00% named
>>
>> Every other process take no or almost no memory
>>
>> Then it craps out with those errors:
>>
>> 10:23:05named[: resolver.c:2870: unexpected error:
>> 10:23:05named[: isc_timer_create: out of memory
>> 10:23:20 ruff named[67330]: timer.c:650: unexpected error:
>> 10:23:20 ruff named[67330]: couldn't allocate event
>> 10:26:37named[: isc_timer_create: out of memory
>> 10:30:01named[: dropped command channel from 127.0.0.1#55422: out of memory
>> 10:59:09named[: ifiter_getifaddrs.c:61: unexpected error:
>> 10:59:09named[: getting interface addresses: getifaddrs: Cannot allocate
>> memory
>> 11:00:00named[: dropped command channel from 127.0.0.1#63784: out of memory
>> 11:00:01named[: cache cleaner could not create iterator: out of memory
>> 11:00:01named[: cache.c:610: unexpected error:
>> 11:00:01named[: cache cleaner: dns_dbiterator_first() failed: out of memory
>>
>> I had no response on my original post(F.R.A.T.):
>> "
>> I have a 2 BIND servers and the second one copies data(zone files) and
>> reloads it every hour or so.
>> The version of the BIND is 9.3.2
>>
>> This always happens after bind runs for 60-100hours. It crashes every time.
>>
>> 11:00:01 server named[20174]: dns_master_load: out of memory
>> 11:00:01 server named[20174]: could not configure root hints
>> from'named.root': out of memory
>> 11:00:01 server named[20174]: reloading configuration failed: out of memory
>>
>> Now the weird thing is that I had BIND running with the exact same
>> configuration on another server and it never crashed.
>> Also I had the same config on the same server with another version of the OS
>> and another version of bind and it never crashed.
>> I browsed other posts about the out of memory issue and it said to change
>> the datasize variable.
>>
>> Right now, I have no Datasize variable set in named.conf so the default is
>> default(from bind's admin book).
>> It says "default uses the limit that was in force when the server was
>> started.". Now I have no idea how much that is and how much i should put as
>> datasize variable.
>>
>> Do you know how to check the size of the datasize if it's set to default?
>> Do you guys ever had this problem before and have an idea of a good
>> datasize?(I guess it depends on what you do with the server and what kind of
>> server it is...)
>> ----------
>> 6.2.16.9. Operating System Resource Limits
>> The server's usage of many system resources can be limited. Scaled values
>> are allowed when specifying resource limits. For example, 1G can be used
>> instead of 1073741824 to specify a limit of one gigabyte. unlimited requests
>> unlimited use, or the maximum available amount. default uses the limit that
>> was in force when the server was started. See the description of size_spec
>> in Section 6.1.
>> The following options set operating system resource limits for the name
>> server process. Some operating systems don't support some or any of the
>> limits. On such systems, a warning will be issued if the unsupported limit
>> is used.
>> coresize
>> The maximum size of a core dump. The default is default.
>> datasize
>> The maximum amount of data memory the server may use. The default is
>> default. This is a hard limit on server memory usage. If the server attempts
>> to allocate memory in excess of this limit, the allocation will fail, which
>> may in turn leave the server unable to perform DNS service. Therefore, this
>> option is rarely useful as a way of limiting the amount of memory used by
>> the server, but it can be used to raise an operating system data size limit
>> that is too small by default. If you wish to limit the amount of memory used
>> by the server, use the max-cache-size and recursive-clients options instead.
>> files
>> The maximum number of files the server may have open concurrently. The
>> default is unlimited.
>> stacksize
>> The maximum amount of stack memory the server may use. The default is
>> default.
>> ----------
>> "
>>
>> Etienne
>>
>>
>>
>>
>
More information about the bind-users
mailing list