質問: isucon9予選問題のruby実装にnewrelic_rpmを導入するとruntimeerror 回避策がいくつか見つかったので現状困ってはいませんが、もしかするとnewrelic_rpm gemになんらかの課題があるかもしれないため報告します。 事象 isucon9予選問題のruby実装 ttps://github.com/isucon/isucon9-qualify/tree/master/webapp/ruby にnewrelic_rpm gemをinstallし、ベンチマーカーから並列リクエストを行うと、runtimeerrorが発生する。 "status code: 500; body: runtimeerror: can't add a new key into hash ...
回答: runtimeerror: can't add a new key into hash during iterationというメッセージのエラーはマルチスレッド環境下でhashに対する競合が起きたときに発生すると考えられます。いくつかの原因が考えられますが、例えば env を反復処理している箇所が考えられます。似たようなエラーは報告されておりますが、newrelic_apm にそのような箇所がなく、3rd partyのgemなどに含まれていると考えております。今回のケースであれば、おそらくdevelopment時に追加されるrack middlewareにそのようなコードがあるのではないかと推...