I have a little example that consumes real time feed from a social
network.
The first step is to receive and parse the feed. (log step 1)
The second step is to persist it to big table. (log step 2,3,4,5)
I noticed that once my first step executes slowly. (from a cold
start?) I do get an exception during the JDO persistence:
com.google.appengine.repackaged.com.google.common.base.internal.Finalizer
getInheritableThreadLocalsField: Couldn't access
Thread.inheritableThreadLoc
But this does not always happens. In general the feed parsing is done
in 30-60 milliseconds and the persistency is done in 50-100
miliseconds.
But once in a while it gets really bad, and the reading starts taking
1000 miliseconds and the persisteny takes 5000 miliseconds.
The question is, what is causing my servlet to fall asleep, and what
can I do to avoid this. Do I have to generate artificial traffic to
keep it awake.
Is the Thread.intheritableThreadLoc compounding the issue?
Attach below are some of my logs
#
1.
02-12 05:48PM 25.305
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Reading stream in 1072 milliseconds.
See details
2.
I 02-12 05:48PM 25.463
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
set JDO objects 1 in 146 milliseconds.
3.
I 02-12 05:48PM 29.438
com.google.appengine.repackaged.com.google.common.base.internal.Finalizer
getInheritableThreadLocalsField: Couldn't access
Thread.inheritableThreadLoc
4.
I 02-12 05:48PM 30.144
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
makePersistentAll in 4681 milliseconds.
5.
I 02-12 05:48PM 30.144
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Persist stream in 4833 milliseconds.
#
1.
02-12 05:48PM 17.173 /flood_subscriptions?info=ByUserTypeBatch5
200 13039ms 12381cpu_ms 248api_cpu_ms 0kb gzip(gfe)
See details
204.16.33.115 - - [12/Feb/2010:17:48:30 -0800] "POST /
flood_subscriptions?info=ByUserTypeBatch5 HTTP/1.1" 200 0 -
"gzip(gfe)" "flood-subscriptions.appspot.com"
2.
I 02-12 05:48PM 25.305
com.acumen.flood_subscriptions.Flood_subscriptionsServlet
doPost: Reading stream in 1072 milliseconds.
3.
I 02-12 05:48PM 25.463
com.acumen.flood_subscriptions.Flood_subscriptionsServlet
persistFeed: set JDO objects 1 in 146 milliseconds.
4.
I 02-12 05:48PM 29.438
com.google.appengine.repackaged.com.google.common.base.internal.Finalizer
getInheritableThreadLocalsField: Couldn't access
Thread.inheritableThreadLocals. Reference finalizer threads will
inherit thread local values.
5.
I 02-12 05:48PM 30.144
com.acumen.flood_subscriptions.Flood_subscriptionsServlet
persistFeed: makePersistentAll in 4681 milliseconds.
6.
I 02-12 05:48PM 30.144
com.acumen.flood_subscriptions.Flood_subscriptionsServlet
doPost: Persist stream in 4833 milliseconds.
#
1.
I 02-12 05:48PM 21.845
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Reading stream in 29 milliseconds.
See details
2.
I 02-12 05:48PM 21.846
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
set JDO objects 1 in 1 milliseconds.
3.
I 02-12 05:48PM 21.950
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
makePersistentAll in 104 milliseconds.
4.
I 02-12 05:48PM 21.950
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Persist stream in 105 milliseconds.
#
1.
I 02-12 05:48PM 21.734
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Reading stream in 50 milliseconds.
See details
2.
I 02-12 05:48PM 21.735
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
set JDO objects 2 in 0 milliseconds.
3.
I 02-12 05:48PM 21.791
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
makePersistentAll in 56 milliseconds.
4.
I 02-12 05:48PM 21.792
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Persist stream in 57 milliseconds.
#
1.
I 02-12 05:48PM 21.606
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Reading stream in 33 milliseconds.
See details
2.
I 02-12 05:48PM 21.606
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
set JDO objects 1 in 0 milliseconds.
3.
I 02-12 05:48PM 21.653
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
makePersistentAll in 47 milliseconds.
4.
I 02-12 05:48PM 21.653
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Persist stream in 47 milliseconds.
#
1.
I 02-12 05:48PM 15.875
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Reading stream in 890 milliseconds.
See details
2.
I 02-12 05:48PM 16.034
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
set JDO objects 1 in 150 milliseconds.
3.
I 02-12 05:48PM 20.323
com.google.appengine.repackaged.com.google.common.base.internal.Finalizer
getInheritableThreadLocalsField: Couldn't access
Thread.inheritableThreadLoc
4.
I 02-12 05:48PM 21.500
com.acumen.flood_subscriptions.Flood_subscriptionsServlet persistFeed:
makePersistentAll in 5466 milliseconds.
5.
I 02-12 05:48PM 21.500
com.acumen.flood_subscriptions.Flood_subscriptionsServlet doPost:
Persist stream in 5620 milliseconds.
--
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 [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-java?hl=en.