Your logic seems good to me. Setting a static class variable during the init method of HttpServlet should work :)
On Mar 21, 4:01 am, Steve Pritchard <steve...@gmail.com> wrote: > Correction. > > I also use the init method of the HttpServlet class to know that this > is the first time. > > I made the interesting discovery that the development mode honours the > <load-on-startup> parameter of WEB.XML whereas the production server > does not (ignores it and calls the init method just before first use). > > During this init cycle it is possible to open a socket (I use a > SocketLogger) by placing the .jar file in the SDK lib\shared folder > that contains the required class SocketLogger. > > Steve > > On Mar 20, 11:02 pm, Steve Pritchard <steve...@gmail.com> wrote: > > > > > Thanks Kyle, > > But too bad, I thought you had figured out a way to know if there is a > > machine swap. > > > As for knowing if I am being reloaded, I have a static class variable > > that if it loses its value I assume we are starting again. Is that > > logic sound? or do I need this SessionListener the reference talks > > about? > > > My way seems even simpler if it works. > > > Thanks > > Steve > > > On Mar 20, 10:19 pm, Spines <kwste...@gmail.com> wrote: > > > > The JVM Id is just a random number I assign to the JVM at startup > > > time. I just call new Random().nextLong(). > > > >http://code.google.com/appengine/kb/java.html#How_To_Detect_Loading_R... > > > explains how to know when a JVM is starting up. > > > > On Mar 20, 6:22 pm, Steve Pritchard <steve...@gmail.com> wrote: > > > > > Thanks Kyle, > > > > > Your blog was very insightful. I am not sure why your JVM spins up so > > > > fast and mine takes upwards of 5000ms. I have several .jar files of > > > > my own and probably instantiate 3 or 4 dozen classes in order to serve > > > > my home page. > > > > > My JSPs are all precompiled. There is only MemCache access (1) and > > > > then the deserialization of about 40K's worth of data. I have the > > > > same notion as you mention in that my JSP's can be marked cacheable in > > > > which case the results get served next time. (The system > > > > automatically detects dependent Entity classes and blows away the > > > > cached JSP page if a dependent Entity is changed). > > > > > One more thing, your log had a very interesting number on it, the JVM > > > > id. How are you getting this? > > > > > Thanks, > > > > Steve > > > > > On Mar 20, 7:34 pm, Spines <kwste...@gmail.com> wrote: > > > > > > Hi Steve, > > > > > I read your link. What I am referring to does include JVM startup. > > > > > Those are the times I get right after a redeploy. > > > > > > Here are some more lines from my logs, included with my info logs that > > > > > I omitted last time: > > > > > 03-20 04:07PM 41.084 /donothing 200 891ms 796cpu_ms 0kb Mozilla/5.0, > > > > > AC.Log info: JVMID: -4270362285924610791 - ReqNum: 0 > > > > > 03-20 04:11PM 22.290 /donothing 200 1240ms 777cpu_ms 0kb Mozilla/5.0, > > > > > AC.Log info: JVMID: -5678405964618118370 - ReqNum: 0 > > > > > 03-20 04:12PM 06.574 /donothing 200 81ms 58cpu_ms 0kb Mozilla/5.0, > > > > > AC.Log info: JVMID: -5678405964618118370 - ReqNum: 1 > > > > > 03-20 04:14PM 31.684 /donothing 200 1105ms 835cpu_ms 0kb Mozilla/5.0, > > > > > AC.Log info: JVMID: -5439702848547505668 - ReqNum: 0 > > > > > 03-20 04:14PM 52.309 /donothing 200 71ms 58cpu_ms 0kb Mozilla/5.0, > > > > > AC.Log info: JVMID: -5439702848547505668 - ReqNum: 1 > > > > > > Here are the corresponding times for my browser to receive a response > > > > > (captured with firebug): > > > > > 1.11s > > > > > 1.38s > > > > > 188ms > > > > > 1.22s > > > > > 172ms > > > > > > In the logs, the lines that say "ReqNum: 0" were cold starts that > > > > > happened because I redeployed my app. One of them even took less than > > > > > a second :). > > > > > > I have spent many months learning how to optimize my cold start time. > > > > > I took my original app that took 15 seconds for a cold start, and have > > > > > brought it down quite a bit :). > > > > > > I wrote a guide on my blog for cold start optimization if you are > > > > > interested. Here is the link > > > > > -http://www.answercow.com/2010/03/google-app-engine-cold-start-guide-f... > > > > > . > > > > > > On Mar 20, 1:24 pm, Steve Pritchard <steve...@gmail.com> wrote: > > > > > > > Hi, > > > > > > As I explained > > > > > > inhttp://groups.google.com/group/google-appengine-java/browse_thread/th... > > > > > > > I have the notion of cold/warm/hot. > > > > > > It calculates and records the service time when the top left-most > > > > > > GEM > > > > > > is pressed.. Hovering over the gem after it returns will show the > > > > > > stats. > > > > > > > A cold start only happens after a redeploy. > > > > > > > A warm start seems to add about 5000ms to my 'network' time which is > > > > > > normally 400ms or so. My turnaround in the server goes from almost > > > > > > 0 > > > > > > to about 2000ms, mostly doing a single cache-read from MemCache plus > > > > > > the ensuing de-serialization. > > > > > > > The 5000ms has to be JVM etc start up. Only the google folks can > > > > > > deal > > > > > > with that one. Theoretically getting rid of the unneeded .jar files > > > > > > can only help. > > > > > > > In my hot mode there is no JVM start-up and I am able to service the > > > > > > request in about 400ms. > > > > > > > Your cold-start (which is my warm start equivalent) of 2867ms is not > > > > > > including the JVM startup so I suspect at your browser the time is > > > > > > longer. > > > > > > > Hope this helps. > > > > > > Steve > > > > > > > On Mar 20, 11:42 am, Spines <kwste...@gmail.com> wrote: > > > > > > > > Hey Steve, > > > > > > > Yea, the elapsed time is usually higher than CPU usage, but I > > > > > > > think > > > > > > > maybe because I was doing my testing late last night I lucked into > > > > > > > really low elapsed time too. I checked my cold start time this > > > > > > > morning, and elapsed time was 2867ms with 1010cpu_ms. > > > > > > > > Here are some lines from my logs: > > > > > > > 03-20 08:30AM 05.838 /donothing 200 2867ms 1010cpu_ms 0kb > > > > > > > Mozilla/5.0 > > > > > > > 03-20 12:15AM 00.832 /donothing 200 2155ms 913cpu_ms 0kb > > > > > > > Mozilla/5.0 > > > > > > > 03-19 11:02PM 28.449 /donothing 200 1119ms 1166cpu_ms 0kb > > > > > > > Mozilla/5.0 > > > > > > > > The elapsed time seems to vary greatly, whereas cpu time seems to > > > > > > > be a > > > > > > > decent metric to see if an optimization of mine actually had an > > > > > > > effect. The page I request for testing is a servlet which returns > > > > > > > nothing. Note that if you are requesting a JSP it will increase > > > > > > > your > > > > > > > cold start times by at least a few hundred milliseconds. For some > > > > > > > reason the first access to even the most simple JSP (like <%= 5+2 > > > > > > > %> > > > > > > > will take quite a while. > > > > > > > > I'd really love to get my elapsed time down to around the same > > > > > > > amount > > > > > > > as my CPU time. Does anyone have any insights as to what exactly > > > > > > > App > > > > > > > Engine is doing during that time? > > > > > > > > On Mar 20, 7:30 am, Steve Pritchard <steve...@gmail.com> wrote: > > > > > > > > > Update to previous post. > > > > > > > > I am measuring elapsed time (what I really care about), not CPU > > > > > > > > secs. > > > > > > > > I could not figure out how a cold start was so fast (1200ms). > > > > > > > > Steve > > > > > > > > > On Mar 20, 10:26 am, Steve Pritchard <steve...@gmail.com> wrote: > > > > > > > > > > Thanks for the tip. I am in the same boat in that I do not > > > > > > > > > use JDO > > > > > > > > > etc. I also do not need GWT stuff. So I deleted: > > > > > > > > > > datanucleus-appengine-1.0.5.final.jar > > > > > > > > > datanucleus-core-1.1.5.jar > > > > > > > > > datanucleus-jpa-1.1.5.jar > > > > > > > > > geronimo-jpa_3.0_spec-1.1.1.jar > > > > > > > > > geronimo-jta_1.1_spec-1.1.1.jar > > > > > > > > > gwt-servlet.jar > > > > > > > > > jdo2-api-2.3-eb.jar > > > > > > > > > > from my 1.3.1 war\lib and it keeps running. My 'warm' start > > > > > > > > > (using > > > > > > > > > MemCache) is around 3200ms. Previously I recall it fluctuated > > > > > > > > > around > > > > > > > > > 4000ms. > > > > > > > > > Steve > > > > > > > > > > On Mar 20, 2:09 am, Spines <kwste...@gmail.com> wrote: > > > > > > > > > > > Well, I figured it out, I just deleted all of the jars I > > > > > > > > > > didn't need > > > > > > > > > > from my ./build directory. I deleted all of the JDO, JPA, > > > > > > > > > > and > > > > > > > > > > datanucleus jars. The result of doing this was I got my > > > > > > > > > > first cold > > > > > > > > > > start that happened under 1200ms :). Previously the CPU > > > > > > > > > > time used by > > > > > > > > > > a cold start was pretty consistently around 1500ms, and > > > > > > > > > > after deleting > > > > > > > > > > those jars it is now around 1150ms :). -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.