基本上,我被EventMachine烧毁,声称JRuby兼容性,但java实现在标准模式中的线程安全问题上失败(例如Thread.new{EM.run}
在JRuby下不起作用) - 我们说的是非常基本的EM函数这里。
不幸的是,大多数JRuby宝石都是先前在正确的多线程环境中没有真正使用的MRI宝石(偶尔会有乘客的Thread.new不计算),有点编码为合理的线程安全并且在JRuby中“调整直到测试为绿色” 。考虑到捕获和测试线程安全问题的难度,可以合理地假设这些宝石中的许多都会在负载下中断。
当然,基准测试将识别其中许多问题,但对于更复杂的工作流程(例如“与第三方登录用户事务处理”)通常很难做基准测试,并且几乎肯定会泄漏有趣且难以捕获错误在应用程序足够复杂的情况下投入生产。
所以问题是,如果您有运行相对复杂的高吞吐量多线程rails应用程序的经验,