我在Heroku上的app slug大小表示222 MB。非常庞大,超出200MB的允许范围。
因此,我已经检查了这些事情:
检查我的源代码大小: 89,9 Mo 知道 80,2 Mo 来自播放应用的目标文件夹
检查我的.gitignore文件,确保播放应用的目标文件夹排除在外。这是我的.gitignore文件:
.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
检查我的SBT常春藤缓存大小: 100,9 Mo
这里详细说明了每个文件夹的大小(左侧):
MikaPc:缓存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/jars
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。
我的SBT构建文件包含以下依赖项:
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()
)
我可以做些什么来减少这个巨大的slu size尺寸?即使我删除了一些文件和罐子来源,尺寸也会很大。
尽管.gitignore
文件
当然,我已经使用这个buildpack创建了我的Heroku应用程序:https://github.com/heroku/heroku-buildpack-scala
此外,在SBT(或播放配置)中是否有一种精确的方法,在Heroku生产环境中不应下载某些依赖项如Specs2(测试)?
编辑---------
我运行以下命令来显示我在Heroku上推送的实际大小:
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我想象最终会达到222Mo ..哼声
获胜者是:227M ./.jdk/jre
参与slug大小。这是......正常吗?
答案 0 :(得分:6)
Heroku最近改变了我们使用您的应用程序部署的JDK的方式。它现在比以前大很多。我们还提高了slug大小限制,因此除了使发布版本变慢之外,这不会妨碍你的应用程序。
我们会更新文档以匹配实际的当前限制。