你如何为高吞吐量multithreadingRails应用选择gem?

基本上,我被EventMachine烧毁,声称JRuby兼容性,但java实现在标准模式中的线程安全问题上失败( Thread.new{EM.run}在JRuby下不起作用) – 我们说的是非常基本的EM函数这里。

不幸的是,大多数JRubygem都是以前在正确的multithreading环境中没有真正使用的MRIgem(偶尔会有乘客的Thread.new不计算),有点编码为合理的线程安全并且在JRuby中“调整直到测试为绿色”。 考虑到捕获和测试线程安全问题的难度,可以合理地假设这些gem中的许多都会在负载下中断。

当然,基准测试将确定许多这些问题,但基准测试通常很难用于更复杂的工作流程(例如“与第三方登录用户事务处理”),并且几乎肯定会泄漏有趣且难以将错误捕获到生产中足够复杂的应用程序。

所以问题是,如果您有运行相对复杂的高吞吐量multithreadingrails应用程序的经验,

  1. 你如何选择gem? (有资源列出经过实战考验的gem等)
  2. 如何在部署之前测试线程安全性以及测试后问题多久会泄漏到生产中?
  3. 平均而言,您是否经常遇到声称线程安全和/或jruby合规性的gem中的线程安全问题?
  4. gem更新多久烧一次你?