When running isc-dhcp the leases file seems to grow indefinitely (several hundred MB). If I restart the isc-dhcp service, the file shrinks to 1.5MB.
How can I have isc-dhcp flush expired records periodically without restarting the full service?
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.Sign up to join this community
As MadHatter mentioned in a comment, the leases file is periodically re-created to avoid this problem. While the period isn't mentioned in the documentation, discussions on the dhcp-users mailinglist indicates that it should be done once an hour, and I've checked the source code and found that this is correct.
Unfortunately this isn't a configurable option. In order to change it, you'd need to compile the dhcp server from source. In the file
server/db.c you'd need to change the line
#define LEASE_REWRITE_PERIOD 3600
to the number of seconds you'd prefer.
Check the answer to my question How do I purge dhcpd.leases. In my case the ownership of /var/lib/dhcp was root:root owing to a bug in isc-dhcp-server. Changing it to dhcpd:dhcpd fixes the problem temporarily, but it comes back when dhcpd restarts.