Ōku no hitto ("many hits" in Japanese) is an experiment to figure out how best to saturate a HTTP pipe.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Ō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.

* 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)