<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.christophchamp.com/index.php?action=history&amp;feed=atom&amp;title=Tcpkali</id>
		<title>Tcpkali - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.christophchamp.com/index.php?action=history&amp;feed=atom&amp;title=Tcpkali"/>
		<link rel="alternate" type="text/html" href="http://wiki.christophchamp.com/index.php?title=Tcpkali&amp;action=history"/>
		<updated>2026-04-15T05:31:01Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://wiki.christophchamp.com/index.php?title=Tcpkali&amp;diff=7531&amp;oldid=prev</id>
		<title>Christoph: Created page with &quot;'''tcpkali''' is a high performance TCP and WebSocket load generator and sink.  ==Test concurrent TCP connections between two machines==  ; Host + Client VM setup  NOTE: Run t...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.christophchamp.com/index.php?title=Tcpkali&amp;diff=7531&amp;oldid=prev"/>
				<updated>2019-05-14T00:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;tcpkali&amp;#039;&amp;#039;&amp;#039; is a high performance TCP and WebSocket load generator and sink.  ==Test concurrent TCP connections between two machines==  ; Host + Client VM setup  NOTE: Run t...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''tcpkali''' is a high performance TCP and WebSocket load generator and sink.&lt;br /&gt;
&lt;br /&gt;
==Test concurrent TCP connections between two machines==&lt;br /&gt;
&lt;br /&gt;
; Host + Client VM setup&lt;br /&gt;
&lt;br /&gt;
NOTE: Run the following commands on ''both'' the Host and the Client VMs/instances.&lt;br /&gt;
&lt;br /&gt;
* Install &amp;lt;code&amp;gt;tcpkali&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo yum update -y&lt;br /&gt;
$ sudo yum install -y autoconf automake libtool bison flex gcc-c++ ncurses-devel git&lt;br /&gt;
$ git clone https://github.com/satori-com/tcpkali.git&lt;br /&gt;
$ cd tcpkali/&lt;br /&gt;
$ test -f configure || autoreconf -iv&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install &amp;lt;code&amp;gt;socat&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo yum install -y socat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Change kernel settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo echo 1 &amp;gt;/proc/sys/net/ipv4/tcp_tw_reuse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the following lines to the &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@wheel           soft    nofile          6000&lt;br /&gt;
@wheel           hard    nofile          65335&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Then,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo sysctl -p&lt;br /&gt;
$ ulimit -a&lt;br /&gt;
$ ulimit -Sn  # [soft] maximum number of open file descriptors&lt;br /&gt;
$ ulimit -Hn  # [hard] maximum number of open file descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
; Host VM setup&lt;br /&gt;
&lt;br /&gt;
NOTE: Run the following commands ''only'' on the Host VM/instance.&lt;br /&gt;
&lt;br /&gt;
* Start up &amp;lt;code&amp;gt;socat&amp;lt;/code&amp;gt; (in the background):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo socat -v tcp-l:443,fork exec:'/bin/cat' &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Watch for &amp;quot;ESTABLISHED&amp;quot; connections on the host:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export TCP_LOGFILE=tcp.log&lt;br /&gt;
while true; do&lt;br /&gt;
  netstat -an | grep &amp;quot;ESTABLISHED&amp;quot; | grep -v :22 | \&lt;br /&gt;
  echo -e &amp;quot;$(date +%s)\t$(wc -l)&amp;quot; | tee -a ${TCP_LOGFILE}; sleep 1;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Client VM setup&lt;br /&gt;
&lt;br /&gt;
NOTE: Run the following commands ''only'' on the Client VM/instance.&lt;br /&gt;
&lt;br /&gt;
* Run &amp;lt;code&amp;gt;tcpkali&amp;lt;/code&amp;gt; on Client VM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export HOST_IP=x.x.x.x&lt;br /&gt;
$ export HOST_PORT=443&lt;br /&gt;
$ export CONNECTIONS=1000  # Connections to keep open to the destination(s)&lt;br /&gt;
$ export WORKERS=2         # Number of parallel threads to use&lt;br /&gt;
$ export DURATION=1000     # Exit after the specified amount of time (in seconds)&lt;br /&gt;
&lt;br /&gt;
#  --latency-connect            Measure TCP connection establishment latency&lt;br /&gt;
#  --latency-first-byte         Measure time to first byte latency&lt;br /&gt;
#  --latency-marker &amp;lt;string&amp;gt;    Measure latency using a per-message marker&lt;br /&gt;
#  --latency-marker-skip &amp;lt;N&amp;gt;    Ignore the first N occurrences of a marker&lt;br /&gt;
#  --latency-percentiles &amp;lt;list&amp;gt; Report latency at specified percentiles&lt;br /&gt;
$ export LATENCY_OPTION=--latency-connect&lt;br /&gt;
&lt;br /&gt;
$ tcpkali ${HOST_IP}:${HOST_PORT} \&lt;br /&gt;
    --connections=${CONNECTIONS} \&lt;br /&gt;
    --workers=${WORKERS} \&lt;br /&gt;
    --duration=${DURATION} \&lt;br /&gt;
    ${LATENCY_OPTION} \&lt;br /&gt;
    --verbose=3  # [0..3]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://github.com/satori-com/tcpkali Official website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux Command Line Tools]]&lt;/div&gt;</summary>
		<author><name>Christoph</name></author>	</entry>

	</feed>