2016-08-31 7 views
0

Ich habe eine sehr einfache Rails-Anwendung, die eine Post-Anfrage mit 130 MB im Wert von Bildern auf einmal erhält. Diese Anfragen werden über einen Controller abgewickelt, der einfach mit einem JSON-Objekt antwortet und sagt, dass er die Nachricht erhalten hat. Das ist absolut alles, was ich tue.Ist dies ein Speicherleck?

Ich habe diese App auf einem Heroku-Hobby-Prüfstand eingesetzt. Immer wenn ich eine Anfrage mache, steigt der Speicherverbrauch beträchtlich, oft über die Grenzen meines Prüfstandes hinaus.

Image of the heroku metrics log

ich für Speicher erwarten würde zur Normalität zurück, nachdem die Anforderung empfangen wird und „bearbeitet“ (zumal ich nicht einmal bin mit dem Inhalt empfangen wird).

Kann mir jemand helfen, herauszufinden, was vor sich geht?

Falls es hilft, hier ist ein Code-Snippet des Controllers, der die Anforderung empfängt:

class ImageUploadController < ApplicationController 
def create 
    params["images"].each_with_index do |base64image, index| 
     # ImageUploadJob.perform_later(base64image, params["imageType"], params["profileID"], index) 
    end 
    params = nil 
    render :json => {'result': 'Image sent for upload'}, :status => :ok 
end 
+0

Haben Sie versucht, jeweils ein Bild zu senden? Wenn die Größe der Bilder beim Senden 130 MB beträgt, ist die Größe der Ruby-Anwendung aufgrund der Ruby-Objekte, die sie darstellen, wahrscheinlich noch größer. – kcdragon

+0

Danke für deine Antwort, ich kann es versuchen, aber es erklärt immer noch nicht, warum der Speicher nicht freigegeben wird. Es scheint definitiv ein besserer Ansatz zu sein, die Bilder zu senden, wie Sie es vorgeschlagen haben! –

Antwort

0

ich es herausgefunden! Es stellte sich heraus, dass der Puma Webserver, den ich benutzte, die Probleme verursachte. Ich konnte den Grund nicht bestimmen, aber sobald ich zu Passagier wechselte, gingen alle meine Probleme weg.