On my Synology I added last night to run a special script to disconnect slow peers (in my case any peer slower than 3 seconds):
peer-filter.sh - this runs every 5 minutes
#!/bin/bash
# peer-filter.sh - Disconnect high-ping peers (Docker version)
THRESHOLD=1.0 # seconds
CONTAINER="bitcoin-node"
# Fetch peers using docker exec
for peer in $(docker exec -i $CONTAINER bitcoin-cli -conf=/bitcoin/bitcoin.conf -datadir=/bitcoin getpeerinfo | jq -c '.[]'); do
ping=$(echo "$peer" | jq '.pingtime')
addr=$(echo "$peer" | jq -r '.addr')
# If pingtime is above threshold, disconnect
if (( $(echo "$ping > $THRESHOLD" | bc -l) )); then
echo "🚫 Disconnecting $addr (ping: $ping)"
docker exec -i $CONTAINER bitcoin-cli -conf=/bitcoin/bitcoin.conf -datadir=/bitcoin disconnectnode "$addr"
fi
done
It logs this:
...
🚫 Disconnecting 123.100.246.248:8333 (ping: 6.793595)
🚫 Disconnecting 203.11.72.218:8333 (ping: 2.599044)
...