Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在ruby 1.9.3上运行rails时出现分段错误_Ruby On Rails_Ruby_Ruby On Rails 3_Passenger_Memory Corruption - Fatal编程技术网

Ruby on rails 在ruby 1.9.3上运行rails时出现分段错误

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应用程序,我们最近开始将其升级到Rails3

我们的堆栈是ruby-1.9.3p484、rails 3.2.16和passenger 4.0.23,运行在apache之上

在我们的几台机器上出现了一些流量之后,我们开始注意到一些非常奇怪的错误

比如,在对象上没有定义随机方法,而对象上显然有随机方法,实例变量在AR关联中为零,对象只是被随机替换为“false”。到处都是奇怪的行为

检查apache的日志为我们提供了另一点信息,即当这些错误出现时,它们各自的进程也会在应用程序的随机位上崩溃

有时它只是一个ruby节点以null的形式传入,有时它只是一些随机字符串溢出,只是随机的东西被弄乱了

所有这些都不是在测试过程中发生的,因此到目前为止,复制这种情况的唯一“可靠”方法就是向相应的机器抛出流量,看看它们何时/是否开始表现出这种行为

在经历了所有这些之后,以下是我们迄今为止排除的事项:

  • 乘客舱外垃圾收集
  • rails 3本身(显然我们以前也有过,但它们之间的距离足够远,不会触发任何警报)
  • 序列化/将内容放入和移出memcached
  • libxml—有一些报告说,2.5.0版的版本会导致内存损坏,升级到2.7.0并没有真正起到作用
  • 关闭预链接(根据,这可能导致内存损坏)
将GC设置返回到stock似乎缓解了问题,但在这方面我们没有任何结论。似乎更多的收集会降低问题的发生率


有没有想过是什么原因导致了这种情况,或者我们可以用它来帮助我们找出问题的症结所在?

我在测试运行时也遇到了1.9.3-p484 SEGFULT,但我还没有调查过。在我的例子中,它似乎是由测试套件的某些依赖项触发的

我们还遇到了Rails 3上的另一个项目的问题,该项目最终放弃了Rails 3的端口,并坚持使用2.3):


您是否尝试过在Apache/Passenger之外运行该应用程序?

尝试使用Nginx和Unicorn,看看您是否仍然存在问题。我已经使用了乘客很长一段时间,不知道我在生产中遇到的问题的来源(直到我摆脱了乘客)@Abdo-yeah,似乎这也是我们的解决办法。太奇怪了,是的。。自从我做了这个改变,我从来没有这么开心过:-)是的,我正准备更新这个。出于某种奇怪的原因,我们的补丁最终在独角兽下运行。仍然不确定这会对它产生怎样的影响,但这就是原因。好吧,有很多原因(:例如: