Ruby on rails 在ruby 1.9.3上运行rails时出现分段错误
运行一个相当大的rails应用程序,我们最近开始将其升级到Rails3 我们的堆栈是ruby-1.9.3p484、rails 3.2.16和passenger 4.0.23,运行在apache之上 在我们的几台机器上出现了一些流量之后,我们开始注意到一些非常奇怪的错误 比如,在对象上没有定义随机方法,而对象上显然有随机方法,实例变量在AR关联中为零,对象只是被随机替换为“false”。到处都是奇怪的行为 检查apache的日志为我们提供了另一点信息,即当这些错误出现时,它们各自的进程也会在应用程序的随机位上崩溃 有时它只是一个ruby节点以null的形式传入,有时它只是一些随机字符串溢出,只是随机的东西被弄乱了 所有这些都不是在测试过程中发生的,因此到目前为止,复制这种情况的唯一“可靠”方法就是向相应的机器抛出流量,看看它们何时/是否开始表现出这种行为 在经历了所有这些之后,以下是我们迄今为止排除的事项:Ruby on rails 在ruby 1.9.3上运行rails时出现分段错误,ruby-on-rails,ruby,ruby-on-rails-3,passenger,memory-corruption,Ruby On Rails,Ruby,Ruby On Rails 3,Passenger,Memory Corruption,运行一个相当大的rails应用程序,我们最近开始将其升级到Rails3 我们的堆栈是ruby-1.9.3p484、rails 3.2.16和passenger 4.0.23,运行在apache之上 在我们的几台机器上出现了一些流量之后,我们开始注意到一些非常奇怪的错误 比如,在对象上没有定义随机方法,而对象上显然有随机方法,实例变量在AR关联中为零,对象只是被随机替换为“false”。到处都是奇怪的行为 检查apache的日志为我们提供了另一点信息,即当这些错误出现时,它们各自的进程也会在应用程
- 乘客舱外垃圾收集
- rails 3本身(显然我们以前也有过,但它们之间的距离足够远,不会触发任何警报)
- 序列化/将内容放入和移出memcached
- libxml—有一些报告说,2.5.0版的版本会导致内存损坏,升级到2.7.0并没有真正起到作用
- 关闭预链接(根据,这可能导致内存损坏)
有没有想过是什么原因导致了这种情况,或者我们可以用它来帮助我们找出问题的症结所在?我在测试运行时也遇到了1.9.3-p484 SEGFULT,但我还没有调查过。在我的例子中,它似乎是由测试套件的某些依赖项触发的 我们还遇到了Rails 3上的另一个项目的问题,该项目最终放弃了Rails 3的端口,并坚持使用2.3):
您是否尝试过在Apache/Passenger之外运行该应用程序?尝试使用Nginx和Unicorn,看看您是否仍然存在问题。我已经使用了乘客很长一段时间,不知道我在生产中遇到的问题的来源(直到我摆脱了乘客)@Abdo-yeah,似乎这也是我们的解决办法。太奇怪了,是的。。自从我做了这个改变,我从来没有这么开心过:-)是的,我正准备更新这个。出于某种奇怪的原因,我们的补丁最终在独角兽下运行。仍然不确定这会对它产生怎样的影响,但这就是原因。好吧,有很多原因(:例如: