Skip to content

Instantly share code, notes, and snippets.

@nirvdrum
nirvdrum / rubber.yml
Last active August 29, 2015 13:56 — forked from DaKaZ/rubber.yml
# REQUIRED: The name of your application
app_name: foo
# REQUIRED: The system user to run your app servers as
app_user: foo
# REQUIRED: Notification emails (e.g. monit) get sent to this address
#
admin_email: "[email protected]"
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:333)
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:988)
at org.jruby.RubyModule.cacheHit(RubyModule.java:984)
at org.jruby.RubyModule.searchWithCache(RubyModule.java:943)
at org.jruby.RubyModule.searchMethod(RubyModule.java:933)
at org.jruby.RubyClass.finvoke(RubyClass.java:523)
at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1504)
at org.jruby.RubyKernel.send19(RubyKernel.java:2240)
at org.jruby.RubyKernel$INVOKER$s$send19.call(RubyKernel$INVOKER$s$send19.gen)
@nirvdrum
nirvdrum / redis_overhead.rb
Last active January 2, 2016 23:59
Various redis connection methods of consuming 150,000 simple JSON representations of a Sidekiq job. Basically the intent is to get a rough idea of the overhead in queuing and processing 150,000 Sidekiq jobs using both basic and reliable fetch, compared to what you'd get if you had a batch job that just consumed a redis list. No attempt is made h…
def element_generator(count)
['{"class": "LocationUpdateWorker", "queue": "default", "args": {} }'] * count
end
def batched(element_count, batch_size)
Sidekiq.redis do |r|
r.del(:list_test)
r.rpush(:list_test, element_generator(element_count))
start = Time.now
require 'benchmark'
CYCLES = 1_000_000
app = lambda do |env|
[
200,
{ 'Content-Type' => 'text/html' },
['Hello World']
]
23:41:17,368 ERROR [org.apache.catalina.connector] (ajp-/172.16.3.2:8009-4) JBWEB001018: An exception or error occurred in the container during the request processing: java.lang.NullPointerException
at org.jboss.as.web.session.ClusteredSession.update(ClusteredSession.java:973) [jboss-as-web-7.2.x.slim.tb3.incremental.2.jar:7.2.x.slim.tb3.incremental.2]
at org.jboss.as.web.session.DistributableSessionManager.loadSession(DistributableSessionManager.java:1389) [jboss-as-web-7.2.x.slim.tb3.incremental.2.jar:7.2.x.slim.tb3.incremental.2]
at org.jboss.as.web.session.DistributableSessionManager.findSession(DistributableSessionManager.java:681) [jboss-as-web-7.2.x.slim.tb3.incremental.2.jar:7.2.x.slim.tb3.incremental.2]
at org.jboss.as.web.session.DistributableSessionManager.findSession(DistributableSessionManager.java:84) [jboss-as-web-7.2.x.slim.tb3.incremental.2.jar:7.2.x.slim.tb3.incremental.2]
at org.apache.catalina.connector.Request.doGetSession(Request.java:2605) [jbossweb-7.2.0.Final.jar:7.2.0.Final]
at
ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 48) MSC00001: Failed to start service jboss.infinispan.web.default-host/ROOT: org.jboss.msc.service.StartException in service jboss.infinispan.web.default-host/ROOT: org.infinispan.CacheException: Unable to invoke method publ
ic void org.infinispan.statetransfer.StateTransferManagerImpl.waitForInitialStateTransferToComplete() throws java.lang.InterruptedException on object of type StateTransferManagerImpl
at org.jboss.as.clustering.msc.AsynchronousService$1.run(AsynchronousService.java:87) [jboss-as-clustering-common-7.2.x.slim.incremental.9.jar:7.2.x.slim.incremental.9]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.0.
@nirvdrum
nirvdrum / defined_cost_results.md
Last active December 29, 2015 18:59
Cost of defined? in Ruby

In checking a report of defined?() calls being a hot spot in a fog application, I wanted to measure that actual overhead.

Here's the very simple benchmark code:

require 'benchmark/ips'

DEFINED_CONST = true

Benchmark.ips do |x|
incompatible character encodings: ASCII-8BIT and US-ASCII
org/jruby/ext/stringio/StringIO.java:1155:in `write'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/io.rb:266:in `write_little_endian_bits'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/io.rb:156:in `writebits'
(eval):7:in `do_write'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/struct.rb:217:in `do_write'
org/jruby/RubyArray.java:1613:in `each'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/struct.rb:217:in `do_write'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/base.rb:184:in `write'
/usr/local/rbenv/versions/jruby-1.7.8/lib/ruby/gems/shared/gems/bindata-1.4.5/lib/bindata/base.rb:197:in `to_binary_s'
nirvdrum@melchior ~/dev/workspaces/mogotest $ JRUBY_OPTS="$JRUBY_OPTS -X+C -J-XX:PermSize=512m -d" bundle exec rake
java.lang.ClassNotFoundException: rubygems.defaults.OperatingSystemService
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.jruby.util.JRubyClassLoader.findClass(JRubyClassLoader.java:128)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
14:24:21,355 ERROR [stderr] (OOB-181,shared=tcp) Exception in thread "OOB-181,shared=tcp" java.lang.NullPointerException
14:24:21,357 ERROR [stderr] (OOB-181,shared=tcp) at java.util.concurrent.ConcurrentSkipListMap.comparable(ConcurrentSkipListMap.java:659)
14:24:21,357 ERROR [stderr] (OOB-181,shared=tcp) at java.util.concurrent.ConcurrentSkipListMap.doPut(ConcurrentSkipListMap.java:848)
14:24:21,358 ERROR [stderr] (OOB-181,shared=tcp) at java.util.concurrent.ConcurrentSkipListMap.putIfAbsent(ConcurrentSkipListMap.java:1881)
14:24:21,359 ERROR [stderr] (OOB-181,shared=tcp) at java.util.concurrent.ConcurrentSkipListSet.add(ConcurrentSkipListSet.java:232)
14:24:21,359 ERROR [stderr] (OOB-181,shared=tcp) at org.jgroups.protocols.MERGE3.up(MERGE3.java:270)
14:24:21,360 ERROR [stderr] (OOB-181,shared=tcp) at org.jgroups.protocols.Discovery.up(Discovery.java:375)
14:24:21,360 ERROR [stderr] (OOB-181,shared=tcp) at org.jgroups.protocols.TP$ProtocolAdapter.up(TP.java:2474)
14:24:21,361 ERROR [stderr] (OOB-181