Per the protocol, an acknowledged lease is reserved until expiration or until the client explicitly releases it. A DHCP server will not reassign a leased address.
As
j65nko suggests, if your architecture permits you could manage the load with multiple subnets.
There are two other options you may wish to consider, as well:
- Use a realistic lease length. 24 hours is fine when you have a large pool and no addressing constraints. Consider shorter leases, commensurate with use.
The shortest lease I've ever seen used has been 5 minutes, issued on AT&T's "U-Verse" VDSL network by a gateway router to a DMZ subnet.
Keep in mind that DHCP clients will typically request a renewal when the lease reaches 50% of its lifespan. In that 5 minute example, the client ... which happened to be OpenBSD's dhclient(8) ... requested renewals every 2.5 minutes.
- Expand the size of your subnet and your DHCP pool. We use /24 subnets because they are convenient. But they are arbitrary.
---
Edited to add:
The DHCP server will always test a lease address before reassigning it. If the address is still in use, it will not be issued as a new reassigned lease to the requesting client. Instead, the address will be placed in the "abandoned" address queue for misused addresses and refused leases. The abandoned queue will not be utilized until all other addresses in the pool are consumed with active leases, and these abandoned addresses will be tested again prior to the server issuing any of them as a reassigned lease.