1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "DNSTCPBENCH" "1" "Feb 19, 2026" "" "PowerDNS Authoritative Server"
.SH NAME
dnstcpbench \- tool to perform TCP benchmarking of nameservers
.SH SYNOPSIS
.sp
\fBdnstcpbench\fP [\fIOPTION\fP]... \fIREMOTE\-ADDRESS\fP [\fIREMOTE\-PORT\fP]
.SH DESCRIPTION
.sp
\fBdnstcpbench\fP reads DNS queries (by default from standard input) and
sends them out in parallel to a remote nameserver. By default TCP/IP is
used, but optionally, UDP is tried first, which allows for the
benchmarking of TCP/IP fallback.
.sp
The program reports both mean and median numbers for queries per second
and UDP and TCP latency. Each query only counts once, even if it is
tried over UDP first. This effectively means that passing \(aq\-u\(aq can lower
query rates if many queries get shunted to TCP.
.sp
The input format is one query per line: qname single\-space qtype. An
example:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
www.powerdns.com ANY
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
When benchmarking extended runs, it may be necessary to enable
TIME_WAIT recycling, as TCP/IP port tuples may otherwise run out. On
Linux this is performed by running:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
The equivalent for IPv6 is not known.
.SH OPTIONS
.INDENT 0.0
.TP
.B REMOTE\-ADDRESS
IPv4 or IPv6 to test against.
.TP
.B REMOTE\-PORT
Port to test against, defaults to 53.
.UNINDENT
.INDENT 0.0
.TP
.BI \-f \ <FILENAME>\fR,\fB \ \-\-file \ <FILENAME>
\fIFILENAME\fP from which to read queries. Defaults to standard input if unspecified.
.TP
.B \-h\fP,\fB \-\-help
Provide a helpful message.
.TP
.BI \-\-timeout\-msec \ <MSEC>
\fIMSEC\fP milliseconds to wait for an answer.
.TP
.B \-u\fP,\fB \-\-udp\-first
Attempt resolution via UDP first, only do TCP if truncated answer is received.
.TP
.B \-v\fP,\fB \-\-verbose
Be wordy on what the program is doing.
.TP
.BI \-\-workers \ <NUM>
Use \fINUM\fP parallel worker threads.
.UNINDENT
.SH BUGS
.sp
Currently the timeout code does not actually perform non\-blocking
connects or writes. So a slow connect or slow writes will still cause
low performance and delays.
.sp
Median queries per second statistics are reported as 0 for sub\-second
runs.
.SH AUTHOR
PowerDNS.COM BV
.SH COPYRIGHT
PowerDNS.COM BV
.\" Generated by docutils manpage writer.
.
|