I have been load testing my piholes with a program called Dnsblast for a few years now and also a Yacy search engine .
So to load test a pihole use its IP then the total number of queries at the speed to send them in Hz.
It generates a bunch of random 4 char domains to lookup by your server.
./dnsblast 192.168.1.5 10000 300
The output from the above command.
Sent: [2443] - Received: [2127] - Reply rate: [297 pps] - Ratio: [87.07%]
These are the settings I'm currently running with in sysctl, approx 20% increase in the pihole answering DNS requests.
nano /etc/sysctl.conf
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 2048
net.core.somaxconn = 2048
net.ipv4.ip_local_port_range = 10000 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syncookies = 0
#net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_keepalive_time = 890
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 20
vm.swappiness = 10
You may have to restart the pihole FTL after blasting it for some time.
service pihole-FTL restart