Hi Richard,
IMO it's not important to put all JAR files into one. It's important to reduce your absolute number of files. Each initial file access costs a little time, but it doesn't really matter if you access 30 jar files or 1. What makes a difference is wether App Engine needs to load 2000 class files one by one, or if they are all inside a handful of jars. I'd also consider moving all other files, like property-files and HTML files (in case your app parses them) into those jars. Made a huge difference for me. Good luck! Per On Saturday, June 23, 2012 7:22:34 AM UTC+2, Richard Watson wrote: > > Hi Will, > > I also tried bundling (most [1]) jars into one but it didn't seem to move > the needle at all, once classes were jarred. I did perceive a lower > initial-RAM level - I think it was about 4 or 5 megs lower but I didn't > test that too carefully. Is your load-time difference compared to unjarred > classes, or to multiple jars only? > > I did think to try bundling only the jars my app would need on startup, to > reduce the overall initial load. Does Java have to inspect the contents of > all jar files to figure out where required classes are? > > Richard > > [1] GAE deployment complained my 1-jar solution was too big, so I wrote an > ant task to jar-up only the jars below a certain size and leaving very few > bigger ones. Went from 50+ to about 8. But again, no perceived load-time > improvement once the classes were jarred. > > On Friday, June 22, 2012 8:35:11 AM UTC+2, Will Rayner wrote: >> >> Hi all, >> >> I've also been battling with with java warmup times. Last week I had >> startup time of at least 37 seconds. Now it's hovering around 16. >> >> My performance improvements were made by bundling all my dependencies >> together into a single jar. I've been using the excellent gradle gae plugin >> (https://github.com/bmuschko/gradle-gae-plugin), which integrates with >> https://github.com/musketyr/gradle-fatjar-plugin/. This could easily be >> integrated with an existing gradle project in under an hour. >> >> We're using Resteasy, Htmleasy, soy templates, hibernate orm and >> validator. There were about 60 jars in my WEB-INF/lib. >> >> Regards, >> Will Rayner >> >> >> On Friday, June 22, 2012 1:18:51 PM UTC+10, Thomas Wiradikusuma wrote: >>> >>> I have updated >>> http://code.google.com/p/googleappengine/issues/detail?id=7706 with >>> this information. >>> >>> On Monday, 18 June 2012 11:44:29 UTC+8, Takashi Matsuo (Google) wrote: >>>> >>>> On Mon, Jun 18, 2012 at 9:57 AM, Thomas Wiradikusuma >>>> wrote: >>>> > Just my 2 cents, >>>> > >>>> > If indeed our app needs to be single-JARred and obfuscaticated (at >>>> least removing unused code), IMO that feature should be baked in the tool. >>>> Probably triggered with extra flag. >>>> >>>> I think this is also a good feedback especially if creating the single >>>> JAR contributes the performance. I'd appreciate it if you could file >>>> an issue. >>>> >>>> -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/H1eqfW8o0vQJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
