Память Bloat с ruby, postgresql и потоками - PullRequest
0 голосов
/ 31 августа 2018

Я использую Rails (5.0.7), Ruby (2.3.7)

Когда я меняю схему в потоке, память, кажется, не перестает увеличиваться. Но без памяти поток остается неизменным.

С резьбой

loop {
   Thread.new{  
     ActiveRecord::Base.connection.execute("SET search_path TO new_schema;")
   }.join
   GC.start
   p  GC.stat(:heap_live_slots)
}

Выход:

554116
554941
555766
556591
557416
558241
559066
559891
560716
561541
562366
563191
564016
564841
565666
566491
567316
568141
568966
569791
570616
571441
572266
573091
573916
574741
575566
576391
577216
578041

без резьбы

loop {
   ActiveRecord::Base.connection.execute("SET search_path TO new_schema;")
   GC.start
   p  GC.stat(:heap_live_slots)
}

Выход:

585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285
585285

Я обнаружил, что в памяти появилось множество схем https://github.com/rails/rails/issues/19578 но это было исправлено, я полагаю, не уверен, почему это происходит.

...