2014-07-19 12 views
5

Sto provando a schierare Grails molto semplici 2.3.7 dell'applicazione (controllori diversi REST e Primavera di sicurezza rest) su Heroku e costantemente ottenerequota di memoria Heroku superato con semplici Grails app

Error R14 on Heroku (Memory Quota Exceeded) 
Process running mem=906M(177.1%) 

mio BuildConfig.groovy contiene:

grails.project.fork = [ 
    test: false, 
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false], 
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false], 
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256] 
] 

Perché Grails consumano tanta memoria e come posso ottimizzare il mio BuildConfig.groovy per adattarsi a 512mb limitazione Heroku?

UPD Potrebbe esserci il problema nel mio file travis.yml? Ecco come si presenta:

language: groovy 
jdk: 
- oraclejdk7 
before_script: 
- chmod +x grailsw 
script: ./grailsw clean 
    && ./grailsw refresh-dependencies 
    && ./grailsw test-app 
before_deploy: 
- chmod +x grailsw 
deploy: 
    provider: heroku 
    app: igetit 
    on: develop 
+0

Non sono sicuro, ma potrebbe essere che il maxPerm (Perm Gen) e la (dimensione heap) maxMemory vengono aggiunti insieme. Un approccio in questo potrebbe essere quello di ridurre maxMemory a 512 e mantenere il maxPerm a 256 (forse potresti portarlo a 192 o qualcosa del genere, ma dovresti fare qualche esperimento qui) –

+0

So che è strano, ma dopo aver cambiato maxMemory su 512 e ridistribuzione dell'utilizzo della memoria è diventato ancora di più: 934M – turboDi

+0

Come si distribuisce esattamente l'app? Stai schierando la guerra? Stai correndo in guerra? Qualunque altra cosa? –

risposta

1

Il mio commento come risposta:

Se si utilizza graal guerra, allora queste impostazioni della memoria non vengono utilizzati. Vengono utilizzati solo per l'esecuzione a forcella, ad esempio durante l'esecuzione di app di test o di run-war. Le tue impostazioni di memoria sono probabilmente controllate dal tuo JAVA_OPTS. Non ho familiarità con Heroku, ma si potrebbe dare un'occhiata qui:

Heroku JVM tuning

1

Quando non si parla jdk poi heroku di default prendere open-jdk. Basta citare la versione jdk.

Creare un file system.properties in parallelo di application.properties e aggiungere la seguente riga:

java.runtime.version=1.7 

Commit questo file e ridistribuire.

Ref # Grails R14 Error (Memory quota exceeded) on Heroku

+0

Grazie, ma ho già letto questo articolo. Non funziona per me – turboDi

+0

Ho lo stesso errore alcuni mesi indietro e la procedura di cui sopra alcuni il problema. Potrebbe essere un altro problema che hai. Ti auguro il meglio. – user1690588

Problemi correlati