Skip to content

Instantly share code, notes, and snippets.

View zanker's full-sized avatar

Zachary Anker zanker

  • San Francisco, CA
View GitHub Profile
require 'http'
started_at = Time.now
threads = 10.times.map do |i|
sleep 0.1
Thread.new do
begin
started_at = Time.now
response = HTTP.get("http://localhost:8001/#{i}")
# Thread 1
total = 0
loop do
total = total + 1
end
# Thread 2
response = HTTP.post("/users/create")
data = JSON.parse(response.body)
HTTP.post("/update-profile/#data['user_id']}")
Thread.new do
started_at = Time.now.to_f
sleep 1
report_time("thread.contention", (Time.now.to_f - started_at - 1) * 1000)
end
started_at = Time.now.to_f
response = HTTP.post("/users/create")
report_time("users.create", (Time.now.to_f - started_at) * 1000)
response
started_at = Time.now.to_f # 00:00
# Context switch to another thread
# 00:05, Context switch back 5 seconds later
response = HTTP.post("/users/create") # 00:06
report_time("users.create", (Time.now.to_f - started_at) * 1000) # 00:06
@zanker
zanker / nginx.conf
Last active November 23, 2017 14:51
daemon off;
worker_processes 1;
error_log /dev/stdout debug;
pid /tmp/nginx.pid;
events {
worker_connections 8192;
}