2013-03-08 7 views
6

Meine App Slug Größe auf Heroku zeigt 222 mb. Ziemlich riesig und jenseits der 200MB erlaubt.Heroku Slug Größe bei 222 MB/Play Framework 2.1/

So habe ich diese Dinge überprüft:

  • Überprüfen Sie meine Quellcode Größe: 89,9 Mo zu wissen, dass 80,2 Mo herkommt Zielordner zu spielen App.

  • Überprüfen Sie meine .gitignore-Datei, um sicherzustellen, dass der Zielordner der Play-App gut ausgeschlossen ist. Hier meine .gitignore Datei:

.DS_Store   
logs 
project/project  
project/target 
target     // target well precised here 
tmp  
.history  
dist  
/.idea  
/*.iml //space here otherwise appears as a comment here  
/out  
/.idea_modules  
/.classpath  
/.project  
/RUNNING_PID  
/.settings 

überprüfen Sie meine SBT Efeu-Cache-Größe: 100,9 Mo

hier die Größe der einzelnen Ordner (links) im Detail :

MikaPc. Cache Mika $ du -xak | sort -n | tail -50
1664 ./org.neo4j/neo4j/docs 1664 ./org.neo4j/neo4j/docs/neo4j-1.9.M05-javadoc.jar
1668 ./org.neo4j/neo4j-kernel/docs
1668. /org.neo4j/neo4j-kernel/docs/neo4j-kernel-1.9.M05-javadoc.jar
1680 ./org.springframework/spring-test 1748 ./org.neo4j/neo4j
1752 ./org.aspectj/aspectjweaver/Dosen
1752 ./org.aspectj/aspectjweaver/jars/aspectjweaver-1.7.1.jar
1860 ./org.springframework/spring-jdbc
1888 ./org.springframework.data/spring-data -commons
1980 ./org.scala-sbt/main/jars
1980 ./org.scala-sbt/main/jars/main-0.12.2.jar
1992 ./org.scala-sbt/main
2100 ./org.springframework/spring-context/docs
2100 ./org.springframework/spring-context/docs/spring-context-3.2.0.RELEASE-javadoc.jar 2104 ./com.sun.jersey 2348 ./org.springframework/spring-core
2356 ./ org.springframework.data/spring-data-neo4j
2404 ./org.springframework/spring-beans
2776 ./org.apache.lucene/lucene-core
2800 ./org.springframework/spring-web
2808 ./org.springframework/spring-webmvc
2812 ./org.aspectj/aspectjweaver/docs
2812 ./org.aspectj/aspectjweaver/docs/aspectjweaver-1.7.1-javadoc.jar 2844 ./org .apache.lucene 3016 ./org.neo4j/neo4j-kernel/jars
3820 ./org.springframework/spring-context
4356 ./org.neo4j/neo4j-cypher/jars
4356 ./org.neo4j /neo4j-cypher/jars/neo4j-cypher-1.9.M05.jar
4436 ./org.specs2/specs2_2.10/docs
4436 ./org.specs2/specs2_2.10/docs/specs2_2.10-1.13 .1-SNAPSHOT-javadoc.jar 4584 ./org.scalaz/scalaz-core_2.10/docs
4584 ./org.scalaz/scalaz-core_2.10/docs/scalaz-core_2.10-7.0-SNAPSHOT-javadoc .jar 4824 ./org.neo4j/neo4j-cypher 5712 ./org.neo4j/neo4j-kernel
5936 ./org.aspectj/aspectjweaver
6024 ./org.springframework.data 6484 ./org.aspectj
6520 ./org.specs2/specs2_2.10/jars
6520 ./org.specs2/specs2_2.10/jars/specs2_2.10-1.13.1-SNAPSHOT.jar
6812 ./org.scala-sbt 8288 ./org.scalaz/scalaz-core_2.10/jars
8288 ./org.scalaz/scalaz-core_2.10/jars/scalaz-core_ 2,10-7,0-SNAPSHOT.jar 11500 ./org.specs2/specs2_2.10 11524 ./org.specs2
13132 ./org.scalaz/scalaz-core_2.10 13140 ./org.scalaz
15832 ./org .neo4j 23500 ./org.springframework
98552.

Meine SBT-Build-Datei enthält die folgenden Abhängigkeiten:

val appDependencies = Seq(
    jdbc, 
    anorm, 
    "org.springframework" % "spring-aop" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-aspects" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-beans" % "3.2.0.RELEASE", 
    "org.springframework.data" % "spring-data-commons-core" % "1.4.1.RELEASE", 
    "org.springframework" % "spring-expression" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-jdbc" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-orm" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-test" % "3.2.0.RELEASE", 
    "org.springframework" % "spring-tx" % "3.2.0.RELEASE", 
    "org.springframework.data" % "spring-data-neo4j" % "2.2.0.RELEASE" excludeAll(
     ExclusionRule(organization = "com.sun.jdmk"), 
     ExclusionRule(organization = "com.sun.jmx"), 
     ExclusionRule(organization = "javax.jms") 
    ), 
    "org.neo4j" % "neo4j" % "1.9.M05" excludeAll(
     ExclusionRule(organization = "org.neo4j", name="neo4j-kernel") 
    ), 
    "org.neo4j" % "neo4j-kernel" % "1.9.M05" % "test" classifier "tests" classifier "", 
    "asm" % "asm-all" % "3.1", 
    "org.springframework.data" % "spring-data-neo4j-rest" % "2.1.0.RELEASE" excludeAll(
     ExclusionRule(organization = "org.neo4j") 
    ), 
    "org.neo4j" % "neo4j-rest-graphdb" % "1.9.M04", 
    "org.scalaz" %% "scalaz-core" % "7.0-SNAPSHOT" withSources(), 
    "org.specs2" %% "specs2" % "1.13.1-SNAPSHOT" % "test" withSources(), 
    "org.mockito" % "mockito-all" % "1.9.0" %"test", 
    "securesocial" %% "securesocial" % "master-SNAPSHOT" withSources() 
) 

Was könnte ich tun, um diese riesige Schneckengröße zu reduzieren? Selbst wenn ich einige Dokumentationen und Gläserquellen entferne, wäre die Größe sehr groß.

Es scheint wirklich, dass Zielordner Spiel App .. trotz der .gitignore Datei

Natürlich gesendet wird, ich meine Heroku App mit dieser buildpack erstellt haben: https://github.com/heroku/heroku-buildpack-scala

Außerdem ist es eine Möglichkeit, präzise in SBT (oder Play-Konfiguration), dass Abhängigkeiten wie Specs2 (Testing) sollten nicht in Heroku Produktionsumgebung heruntergeladen werden?

EDIT ---------

ich den folgenden Befehl ausführen habe die tatsächliche Größe zu zeigen, was ich auf Heroku geschoben:

MikaPc:wwa Mika$ heroku run bash  
Running `bash` attached to terminal... up, run.9266   
~ $ du -h --apparent-size --max-depth 2  
5.3K ./test/resources   
12K ./test/unit   
5.6K ./test/functional   
6.5K ./test/context   
8.5K ./test/acceptance   
5.2K ./test/integration   
47K ./test   
5.0K ./app/helpers   
33K ./app/controllers   
11K ./app/models   
161K ./app/assets   
34K ./app/views   
8.0K ./app/applicationservices   
5.0K ./app/repositories   
20K ./app/utils   
281K ./app    
8.7M ./target/scala-2.10   
1.4M ./target/resolution-cache   
143K ./target/streams    
60M ./target/staged   
71M ./target   
1.1M ./.sbt_home/bin   
834K ./.sbt_home/.sbt   
1.9M ./.sbt_home   
30K ./public/images    
171K ./public/javascripts   
9.6K ./public/stylesheets   
214K ./public   
4.0K ./.ivy2/cache   
8.0K ./.ivy2   
1.1M ./.jdk/bin   
19M ./.jdk/lib   
203K ./.jdk/include   
227M ./.jdk/jre   
247M ./.jdk    
2.8M ./project/target   
20K ./project/project    
53M ./project/boot   
56M ./project   
12K ./conf   
375M .   

375 Mo vor der Kompression Ich stelle mir vor, bis zu 222Mo .. hum

Und der Gewinner ist: 227M ./.jdk/jre Teil der Slug Größe. Es ist normal?

Antwort

6

Heroku hat kürzlich die Art und Weise geändert, in der das JDK, das wir mit Ihrer App bereitstellen, erstellt wird. Es ist jetzt viel größer als zuvor. Wir haben auch die Größenbeschränkung für Slugs erhöht, so dass dies Ihre App nicht behindern wird, außer Releases etwas langsamer zu machen.

Die Dokumente werden aktualisiert, damit sie den aktuellen Grenzwerten entsprechen.

+0

Verstanden :) Vielen Dank! – Mik378

+0

Ich freue mich auf die aktualisierten Dokumente. – adib

+0

@adib Was passiert ist, war, dass wir einen Weg gefunden haben, die Größe des gepackten JDK zu reduzieren. Sie sollten die Slug-Größe drastisch reduzieren, wenn Sie neue Veröffentlichungen veröffentlichen. Wenn nicht, wenden Sie sich bitte an den Heroku-Support. – friism