This is definitely odd. Are you using any frameworks or libraries aside from the App Engine-supplied JDO/JPA implementation? I assume you're using a query to fetch the most recent n messages sorted by a date -- can you reply with your app ID, a snippet of your fetching and persisting code, and any extra information that might be relevant?
Thanks, - Jason On Mon, Dec 21, 2009 at 11:51 PM, Philip Tucker <ptuc...@gmail.com> wrote: > I've got a very simple application with very little data in it. It's a > simple chat app with 2 tables, Room and Message. Each server requests > stores a message and returns the most recent n messages, where n is on > the order of 1-5. > > Each request is taking 2-3 seconds. I'm doing 3 datastore > transactions; look up room by ID, insert message, look up most recent > n message by room ID. I know there's some optimization I could do to > skip the room lookup, but this is still way slower than I would > expect. > > I've also been getting a few of these errors, maybe 1/20 requests or > so: > > com.honkentuber.Servlet doIt: error on ChatServlet > com.google.appengine.api.datastore.DatastoreTimeoutException: Unknown > at > com.google.appengine.api.datastore.DatastoreApiHelper.translateError > (DatastoreApiHelper.java:42) > at > com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall > (DatastoreApiHelper.java:60) > at com.google.appengine.api.datastore.DatastoreServiceImpl$2.run > (DatastoreServiceImpl.java:173) > at > com.google.appengine.api.datastore.TransactionRunner.runInTransaction > (TransactionRunner.java:30) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (DatastoreServiceImpl.java:161) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (DatastoreServiceImpl.java:141) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (DatastoreServiceImpl.java:133) > at > > org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.put > (RuntimeExceptionWrappingDatastoreService.java:93) > at org.datanucleus.store.appengine.DatastorePersistenceHandler.put > (DatastorePersistenceHandler.java:165) > at org.datanucleus.store.appengine.DatastorePersistenceHandler.put > (DatastorePersistenceHandler.java:112) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects > (DatastorePersistenceHandler.java:239) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject > (DatastorePersistenceHandler.java:225) > at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent > (JDOStateManagerImpl.java:3185) > at org.datanucleus.state.JDOStateManagerImpl.makePersistent > (JDOStateManagerImpl.java:3161) > at org.datanucleus.ObjectManagerImpl.persistObjectInternal > (ObjectManagerImpl.java:1298) > at org.datanucleus.ObjectManagerImpl.persistObject > (ObjectManagerImpl.java:1175) > at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent > (JDOPersistenceManager.java:669) > at org.datanucleus.jdo.JDOPersistenceManager.makePersistent > (JDOPersistenceManager.java:694) > at com.honkentuber.chat.ChatServlet.persistMessage(ChatServlet.java: > 83) > at com.honkentuber.chat.ChatServlet.newJspResponse(ChatServlet.java: > 21) > at com.honkentuber.Servlet.doIt(Servlet.java:42) > at com.honkentuber.Servlet.doPost(Servlet.java:29) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: > 487) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter > (ServletHandler.java:1093) > at > com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter > (ParseBlobUploadFilter.java:97) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter > (ServletHandler.java:1084) > at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter > (SaveSessionFilter.java:35) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter > (ServletHandler.java:1084) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter > (TransactionCleanupFilter.java:43) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter > (ServletHandler.java:1084) > at org.mortbay.jetty.servlet.ServletHandler.handle > (ServletHandler.java:360) > at org.mortbay.jetty.security.SecurityHandler.handle > (SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle > (SessionHandler.java:181) > at org.mortbay.jetty.handler.ContextHandler.handle > (ContextHandler.java:712) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: > 405) > at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle > (AppVersionHandlerMap.java:238) > at org.mortbay.jetty.handler.HandlerWrapper.handle > (HandlerWrapper.java:139) > at org.mortbay.jetty.Server.handle(Server.java:313) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: > 506) > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete > (HttpConnection.java:830) > at > com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable > (RpcRequestParser.java:76) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) > at > > com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest > (JettyServletEngineAdapter.java:135) > at com.google.apphosting.runtime.JavaRuntime.handleRequest > (JavaRuntime.java:235) > at com.google.apphosting.base.RuntimePb$EvaluationRuntime > $6.handleBlockingRequest(RuntimePb.java:5235) > at com.google.apphosting.base.RuntimePb$EvaluationRuntime > $6.handleBlockingRequest(RuntimePb.java:5233) > at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest > (BlockingApplicationHandler.java:24) > at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: > 363) > at com.google.net.rpc.impl.Server$2.run(Server.java:838) > at com.google.tracing.LocalTraceSpanRunnable.run > (LocalTraceSpanRunnable.java:56) > at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan > (LocalTraceSpanBuilder.java:536) > at com.google.net.rpc.impl.Server.startRpc(Server.java:793) > at com.google.net.rpc.impl.Server.processRequest(Server.java:368) > at com.google.net.rpc.impl.ServerConnection.messageReceived > (ServerConnection.java:448) > at com.google.net.rpc.impl.RpcConnection.parseMessages > (RpcConnection.java:319) > at com.google.net.rpc.impl.RpcConnection.dataReceived > (RpcConnection.java:290) > at com.google.net.async.Connection.handleReadEvent(Connection.java: > 466) > at com.google.net.async.EventDispatcher.processNetworkEvents > (EventDispatcher.java:759) > at com.google.net.async.EventDispatcher.internalLoop > (EventDispatcher.java:205) > at com.google.net.async.EventDispatcher.loop(EventDispatcher.java: > 101) > at com.google.net.rpc.RpcService.runUntilServerShutdown > (RpcService.java:251) > at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run > (JavaRuntime.java:394) > at java.lang.Thread.run(Unknown Source) > > -- > > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to google-appeng...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.