There is a point to this story, but it has temporarily escaped my mind...
Contact Me MyFaceBook MyLinkedIn MyGitHub MyTwitter

Install Siege

Siege is an HTTP load testing and bench-marking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. It lets its user hit a server with a configurable number of simulated clients. Those clients place the server “under siege.”

For more information, visit the Siege Home web page.

Siege was written on GNU/Linux and has been successfully ported to AIX, BSD, HP-UX and Solaris. It should compile on most System V UNIX variants and on most newer BSD systems. Because Siege relies on POSIX.1b features not supported by Microsoft, it will not run on Windows. Of course you can use Siege to test a Windows server.

Installation

  1. Download the source code:
    cd /tmp
    wget http://download.joedog.org/siege/siege-latest.tar.gz
  2. Extract the archive file:
    tar -xvf siege-latest.tar.gz
  3. Change to the directory containing the source code:
    cd siege-*
  4. Configure and compile the source code:
    sudo apt-get -y install build-essential
    # On RHEL based Linux systems, use: yum install make glibc-devel gcc patch
     
    ./configure
    make
    sudo make install
  5. Tweak system configuration for maximum concurrancy:
    cp /etc/sysctl.conf /tmp/
     
    cat >> /tmp/sysctl.conf << EOF
     
    ##############################################################
    # Improve System Performance Under High Load
    #
     
    # Increase size of file handles and inode cache
    fs.file-max = 2097152
     
    # Do less swapping
    vm.swappiness = 10
    vm.dirty_ratio = 60
    vm.dirty_background_ratio = 2
     
    # Number of times SYNACKs for passive TCP connection.
    net.ipv4.tcp_synack_retries = 2
     
    # Allowed local port range
    net.ipv4.ip_local_port_range = 2000 65535
     
    # Protect Against TCP Time-Wait
    net.ipv4.tcp_rfc1337 = 1
     
    # Decrease the time default value for tcp_fin_timeout connection
    net.ipv4.tcp_fin_timeout = 15
     
    # Decrease the time default value for connections to keep alive
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_keepalive_probes = 5
    net.ipv4.tcp_keepalive_intvl = 15
     
    # Default Socket Receive Buffer
    net.core.rmem_default = 31457280
     
    # Maximum Socket Receive Buffer
    net.core.rmem_max = 12582912
     
    # Default Socket Send Buffer
    net.core.wmem_default = 31457280
     
    # Maximum Socket Send Buffer
    net.core.wmem_max = 12582912
     
    # Increase number of incoming connections
    net.core.somaxconn = 4096
     
    # Increase number of incoming connections backlog
    net.core.netdev_max_backlog = 65536
     
    # Increase the maximum amount of option memory buffers
    net.core.optmem_max = 25165824
     
    # Increase the maximum total buffer-space allocatable
    net.ipv4.tcp_mem = 65536 131072 262144
    net.ipv4.udp_mem = 65536 131072 262144
     
    # Increase the read-buffer space allocatable
    net.ipv4.tcp_rmem = 8192 87380 16777216
    net.ipv4.udp_rmem_min = 16384
     
    # Increase the write-buffer-space allocatable
    net.ipv4.tcp_wmem = 8192 65536 16777216
    net.ipv4.udp_wmem_min = 16384
     
    # Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks
    net.ipv4.tcp_max_tw_buckets = 1440000
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
     
    EOF
     
    sudo cp /tmp/sysctl.conf /etc/
     
    sudo sysctl -p
Copyright © 2015 by Julian Easterling. SOME RIGHTS RESERVED.

Creative Commons License
Except where otherwise noted, content on this site is
licensed under a Creative Common Attribution-Share Alike 4.0 International License.


All of the opinions expressed on this website are those of Julian Easterling and
do not represent the views of any of my current and previous clients or employers in any way.

If you notice an error on the site or content that has not been properly attributed, bring
it to my attention using the contact page and I will endeavor to fix it as soon as I can.

I accept no responsibility or liability for any damages incurred by following any of
my advice or by using any of the information on my site or of those sites that I link to.