Skip to content

Instantly share code, notes, and snippets.

@gbaptista
Created August 17, 2016 01:56
Show Gist options
  • Save gbaptista/4fbe9160752ad121d32a1f58b7e23f53 to your computer and use it in GitHub Desktop.
Save gbaptista/4fbe9160752ad121d32a1f58b7e23f53 to your computer and use it in GitHub Desktop.
syslog stress test
# ruby 2.1.2
require 'syslog'
require 'thread'
process = 40
threads = 4
times = 4611686018427387903
intervals = [0.01, 0.015, 0.05, 0.02, 0.08, 0.1, 0]
process.times.each do |p|
fork do
semaphore = Mutex.new
save_log = lambda do |message|
semaphore.synchronize do
Syslog.open('logbug', Syslog::LOG_PID, Syslog::LOG_USER) do |log|
log.notice('%s', message)
end
end
end
thread_instances = []
threads.times.each do |t|
thread_instances << Thread.new do
times.times.each do
sleep intervals.sample
save_log.call("#{p+1}_#{t+1} > #{Time.now.to_f} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam consectetur lectus est, non varius justo tempus at. Duis ac lorem porta, convallis nunc eget, condimentum arcu. Pellentesque aliquam libero eget enim rutrum, a viverra nisi sodales. Donec vel scelerisque nulla. Sed dictum ut nisl et tincidunt. Fusce pellentesque leo a convallis accumsan. Etiam arcu massa, fringilla at orci et, suscipit iaculis orci. Curabitur lobortis cursus aliquam. Morbi sit amet interdum arcu, et iaculis neque. Vivamus tempor leo commodo auctor mollis. Pellentesque sodales lectus vel neque molestie vulputate. Morbi placerat diam enim, eget euismod nisl tincidunt eget. Nunc varius vestibulum consequat. Sed dignissim odio odio, luctus aliquet lacus porttitor eget. Duis efficitur mollis dolor, commodo vulputate lorem placerat quis. Sed in malesuada nisl. Duis malesuada eros nec ligula consectetur, convallis ornare augue fringilla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut eget orci quis augue venenatis dapibus condimentum quis turpis. Maecenas vel ex ac arcu sagittis efficitur. Duis in convallis erat. Donec sed sem et lectus posuere sodales. Interdum et malesuada fames ac ante ipsum primis in faucibus.")
end
end
end
thread_instances.each(&:join)
end
end
puts "\nfor i in {1..10000}; do sleep 1; time logger \"logbug time check $(date)\"; done\n\n"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment