2017-02-22 8 views
0

Laufschienen Anwendung mit Heroku, für den letzten Monat bekommen wir Speicherkontingent überschritten (R14) Probleme und kaum versucht, die Ursache zu finden, aber keinen genauen Grund bekommen? ist es wegen web_concurrency? Auch verwenden wir new_relicSchienen mit Heroku

Rails: 3.2.22

Rubin: 1.9.3

Server: Einhorn, WEB_CONCURRENCY 5

Als insgesamt 20 dynos wir verwenden und verwalten mit Prozess-Scheduler

enter image description here

+0

Wahrscheinlich ist die App undicht Speicher. Da Sie ein neues Relikt verwenden, sehen Sie in deren Protokoll nach, um das Speicherbelegungsdiagramm zu überprüfen. Wenn das Diagramm nach dem Neustart der Dynos immer noch eine Speichererhöhung anzeigt (nicht sättigend), auch nach einer langen Zeit (wahrscheinlich ein paar Stunden oder ein Tag), ist der Speicher ausgelaufen. Wenn das der Fall ist, weiß ich nicht, ob dir jemand ohne den vollen Quellcode helfen kann. Ich habe es schwer gehabt, diese zu jagen. Der erste Vorschlag ist ein Upgrade auf Ruby 2.x, falls möglich. Es hat eine enorme Verbesserung in der Müllabfuhr über 1.9.x – Sajan

Antwort

0

Ihre gesamte RoR-Stack ist so ziemlich veraltet und Heroku unterstützt jetzt Puma als seine bevorzugten Server, die viel weniger Speicher fressen (Sie ihre Benchmark bei http://puma.io/ überprüfen) puma benchmark

Dennoch, wenn das Problem aus dem Nichts gestartet würde ich eher für die Edelsteine ​​oder ein Stück Code suchen, entweder verursachen solche Speicherverbrauch (ActiveAdmin, Rmagick, etc). Auch eine schnelle, aber teurere Lösung würde Ihren Prüfstand erhöhen (Performance-L oder Performance-M) Als WEB_CONCURRENCY versuchen, es zu senken und überprüfen, ob dies das R14 Problem löst

+0

Ja mit Puma, aber wir haben uns vergewissert, dass unser Code thread-sicher ist? – django

+0

Sie verwenden Rails 3.2.22, so dass das Basisframework zumindest Thread-sicher ist. Es scheint für mich, dass Sie nur versuchen, eine Legacy-Rails-App "einfach funktionieren". Sie können Ihr Problem lösen, indem Sie hw oder sw hinzufügen. Die Software (Upgrade der Ruby - Version, des Rails - Frameworks und der Verwendung von Puma (anstelle von Einhorn) wird viel von Ihrem Problem lindern. Wenn Sie gerade keine Zeit haben, erhöhen Sie Ihre Dyno - Leistung am besten Speicherleck Problem, von Zeit zu Zeit werden Sie von der R14-Sache genervt sein. Der einzige Unterschied ist, dass das Delta höher sein wird, mit besseren Dynos – Codextremist