Jeff: Thanks for the reponse/suggestion. Here are one of my most common requests:
ms=30 cpu_ms=0 api_cpu_ms=0 cpm_usd=0.000263 Seems to be no problems with anything... And here is another (different request): ms=15376 cpu_ms=37 api_cpu_ms=17 cpm_usd=0.003428 pending_ms=8265 Seriously ? 15 seconds response ? Of which, 8 seconds sitting in pending ? And what happened to the other 7 seconds ? This does not seem to be a CPU issue (cpu_ms is super low!). My customers requests are just sitting about doing nothing... and I don't know enough to know where the latency is coming from! This really is very frustrating. I have also tried to limit the number of idle instances and watched the error rate. There is NO correlation between the two. :( -R On Sunday, July 8, 2012 4:58:10 PM UTC-4, Jeff Schnitzer wrote: > > Since you have a multi-threaded app, the very first thing I would try > is switch to F4 instances. You may not need the memory, but > concurrency is theoretically limited by CPU utilization. You may find > that one F4 gives you better results than four F1s. > > Jeff > > On Sun, Jul 8, 2012 at 1:14 PM, Richard <[email protected]> wrote: > > I have an app that produces: "request was aborted" errors. My users are > > getting pissed. So am I. I thought App Engine was meant to scale ? > > > > The app is running up to 40 instances to serve 500 users. All 500 users > > will query the app within a 5 second window (like a mini-DDOS). It is > > python 2.7 and marked as thread-safe. Why one instance can only serve > under > > 20 users, I don't know ! Average memory usage is 44MB on F1 instances. > > > > Latency is set at max 500msec. I have tried setting idle instances to > > 20-Automatic. Billing has been around $30 for the last 12 hours. > However > > this is CRAZY. It cost me $30 to push out 1.25GB of data to under 500 > users > > (500 is the peak!) ?!? > > > > The stupid part is the code looks like this: > > global GAME_DATA > > global GAME_DATA_TIMESTAMP > > delta = datetime.datetime.now() - GAME_DATA_TIMESTAMP > > if delta.total_seconds() < 5.: > > # return cached data > > game = GAME_DATA > > else: > > # get new > > cg_ref = > CurrentGame.get_by_key_name(current_game_key_name) > > game = cg_ref.k > > GAME_DATA = game > > GAME_DATA_TIMESTAMP = datetime.datetime.now() > > > > data = {'s': 'OK', 'g': game.board } > > self.response.out.write(json.dumps(data)) > > > > Yes, that's right... we don't actually do 500 db queries... > > > > At this point, I think there is some internal throttle with GAE that > only > > allows a limited number of http connections at once and just kills off > the > > rest or something. > > > > Can only explain what is going on here, or point me to a competent > > consultant who I can pay to tell me how to fix this ? > > > > -- > > 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/-/Bgk6iG2U7pkJ. > > 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. > -- 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/-/e8hIk5LfoUQJ. 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.
