Home > oku-no-hitto

oku-no-hitto

Oku-no-hitto is a project mainly written in Ruby, it's free.

Ōku no hitto ("many hits" in Japanese) is an experiment to figure out how best to saturate a HTTP pipe.

Ōku no hitto ("many hits" in Japanese) is an experiment to figure out how best to saturate a HTTP pipe under the following conditions:

  • A constant throughput is desirable over varying throughput.
  • Network latency is expected
  • Response time is large, at least 7 seconds, and possibly more.

Pre-requisites:

  • Make sure open files on your system isn't low. On OSX, use sysctl to tweak kern.maxfiles and kern.maxfilesperproc

Ōku no hitto simulator:

Depends on:

  • Ruby 1.8.7
  • Thin rubygem
  • async_sinatra rubygem

Steps to run:

  • thin -R config.ru -p 3000 start or for robustness:
  • thin -R config.ru -p 3001 -s 3
  • and then use simulator/nginx.conf or simulator/haproxy.conf to front.
  • There's also a crude random client side load balancer in threadpool_test, under long_process

Ōku no hitto thread_test.rb:

Depends on:

  • JRuby 1.5.3

Steps to run: ~ Run the simulator ~ jruby -J-Xmx1024m threadpool_test.rb

Interesting variables to tweak: Currently all variables are within the threadpool_test.rb file:

  • under def long_process:
    • host - of the simulator
    • port - of the simulator
  • under invoker:
    • throughput - the intended throughput
  • under top:
    • poll_delay - the delay to poll status

Ōku no hitto threadpool_test.rb: Everything under thread_test.rb plus: Interesting variables to tweak:

  • under invoker:
    • threadpool_size - the size of the threadpool

How to interpret stats:

T: 12318 F: 10668 W: 1650 CE: 0 FE: 0 IT (req/s): 160 FT (req/s): 171

T -> total requests F -> finished requests W -> waiting requests = T - F CE -> connection errors FE -> fatal errors IT -> invoke throughput (dependent on invoker) FT -> finish throughput (dependent on simulator)

Previous:vansin