[google-appengine] Re: Hi, GAE team, I beg you, please don't spawn any dynamic instances for my project, is it possible?

2014-01-24 Thread Per
Maybe related: 

Our instance count exploded to over 100 instances while we normally use 2 
or 3. It happened about 6 hours ago, and average latency went to 2s instead 
of 300ms. It's now slowly going back to normal.

Also, the memcache status page shows a spike. I'm guessing App Engine has 
another of these days, and it might not be anything in your code at all.





On Friday, January 24, 2014 12:47:20 PM UTC+1, Tapir wrote:

 Here are two screnshots of instance lists, http://imgur.com/a/Ts6O0,
 in both cases, gae stole me about 20 minutes computing money.



 On Friday, January 24, 2014 7:40:02 PM UTC+8, Tapir wrote:

 My settings works well before I converted projects into the modules style.
 But after the conversion, the app engine scheduler behavior changes.
 It seems the app engine scheduler treats modules style apps and old style 
 apps differently.

 On Friday, January 24, 2014 7:36:38 PM UTC+8, Tapir wrote:



 On Friday, January 24, 2014 6:48:28 PM UTC+8, Ian Marshall wrote:

 Have you tried something like (we cannot see all your settings):

   appengine-web-app xmlns=http://appengine.google.com/ns/1.0;
 [...]
 threadsafetrue/threadsafe
 automatic-scaling
   min-idle-instances1/min-idle-instances
   max-idle-instancesautomatic/max-idle-instances
   min-pending-latency15.0s/min-pending-latency
   max-pending-latencyautomatic/max-pending-latency
   max-concurrent-requests50/max-concurrent-requests
 /automatic-scaling
   /appengine-web-app


 Thanks for the suggestion.

 Ok, I set max-pending-latency and max-concurrent-requests as your 
 example. But I doubt there are any differences from the last version. In 
 fact max-concurrent-requests should be about 5. 

 The min-pending-latency value is still 2.7 seconds, for I hope dynamic 
 instances still can be spawned WHEN THEY ARE REALLY NEEDED.

 I still keep max-idle-instances as 1 for I don't want to there are 2 and 
 more resident instances.

 Here is the full settings:

 ?xml version=1.0 encoding=utf-8?
 appengine-web-app xmlns=http://appengine.google.com/ns/1.0;
  application{{app_id}}/application
moduledefault/module
  version{{app_version}}/version
  
  !-- loading faster --
   precompilation-enabledtrue/precompilation-enabled
   
  !-- warmup --
   warmup-requests-enabledtrue/warmup-requests-enabled
   
   !-- concurrentcy --
   threadsafetrue/threadsafe 
   
   !-- concurrentcy --
   sessions-enabledtrue/sessions-enabled

   inbound-services
 servicechannel_presence/service
   /inbound-services
   
   !-- scale settings --
   
   instance-classF1/instance-class
   automatic-scaling
 min-idle-instances1/min-idle-instances
 max-idle-instances1/max-idle-instances
 min-pending-latency2730ms/min-pending-latency
 max-pending-latencyautomatic/max-pending-latency
 max-concurrent-requests50/max-concurrent-requests
   /automatic-scaling
  
   !-- Configure java.util.logging --
   system-properties
 property name=java.util.logging.config.file 
 value=WEB-INF/logging.properties/
   /system-properties
  
  static-files
   include path=/favicon.ico /
   include path=/crossdomain.xml /
   include path=/css/**.* expiration=1d/
   include path=/swfs/**.swf expiration=365d /
   include path=/js/**.js expiration=1d /
   include path=/images/**.ico expiration=1d /
   include path=/images/**.png expiration=1d /
   include path=/images/**.gif expiration=1d /
   include path=/images/**.jpg expiration=1d /
   include path=/htmls/**.i* expiration=1d /
  /static-files
  
 /appengine-web-app
  

 to minimise the number of application instances spawned?
 On Friday, 24 January 2014 02:17:50 UTC, Tapir wrote:

 For a website with 1000 requests per days (300 pages), I have tried my 
 best to limit the number of simultaneous running instances.
 Here is the settings:

 ?xml version=1.0 encoding=utf-8 standalone=no?
 appengine-web-app xmlns=http://appengine.google.com/ns/1.0;
   applicationyouyards/application
   !--Other settings here...--
   automatic-scaling
 min-idle-instances1/min-idle-instances
 max-idle-instances1/max-idle-instances
 min-pending-latency2.7s/min-pending-latency
   /automatic-scaling
 /appengine-web-app
  
 But you scheduler will always spawn useless dynamic instances so that 
 the Frontend Instance Hours will always exceeds 28 hours each day. 

 Hi, gea team, I beg beg beg you, pls help tweak the settings so that 
 the Frontend Instance Hours for my project each days will be less than 
 28 
 hours. Thank thank thanks!

 On Friday, January 24, 2014 9:43:44 AM UTC+8, Tapir wrote:

 All the dynamic instances you spawned all just handle only one 
 /_ah/warmup request. 
 After this request, they do nothing but still running there for many 
 minutes even hours!
 You are wasting/stealing my money!



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send

[google-appengine] Re: 100 Email Quota

2013-12-06 Thread Per

It's surprisingly easy to set up a payment plan with Mailgun or Sendgrid. 
If it's urgent, you can be up and running in an hour or two. We did that a 
year ago and have never looked back.


On Friday, December 6, 2013 5:31:32 PM UTC+1, Peabody Wormsworth wrote:

 Hi,

 I have an application that sends out an email when a user submits to a 
 form.
 The free quota limit is 100 emails per day.

 I reached the limit and want to increase it. So I signed up for paid 
 service.

 Now I read elsewhere that the email quota limit will not be increase until 
 after 1 full payment cycle.

 But this is not possible. Because the rest of my application does not 
 extend beyond any of the free quota limits. So I will always be blocked at 
 100 emails and I will never be charged a payment cycle.

 Is there a way to make a payment to Google... like as a donation or 
 something... in order to generate a payment cycle against my card in order 
 to begin the process of being charged for emails beyond the 100 limit?

 Or how else can I send out more then 100 emails?

 It seems that perhaps the limit should be raised to 200 emails per day 
 when a user enters paid service. In this way, it is possible for me to 
 exceed the limit, incur a billing cycle and then request a much higher 
 limit.

 I am not spamming. I am sending emails requested by users through a form.

 Thanks.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.


[google-appengine] Application down for almost 2 hours now. Error code 104, and tons of memcache errors

2013-12-05 Thread Per
Hi there,

our application (small-improvements-hrd) has been misbehaving for two hours 
now. We didn't update it in 5 days, and we've not seen such a bad downtime 
in a year.

Memcache seems to be mostly unavailable, so many requests take 20 to 30 
seconds.

Some requests terminate very quickly:  A problem was encountered with the 
process that handled this request, causing it to exit. This is likely to 
cause a new process to be used for the next request to your application. If 
you see this message frequently, you may be throwing exceptions during the 
initialization of your application. (Error code 104)


And we see this one a lot 


 1 more
Caused by: com.google.appengine.api.memcache.MemcacheServiceException: 
Memcache put: Set failed to set 1 keys: SystemSettings(1)
at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$8.transform(AsyncMemcacheServiceImpl.java:655)

at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$8.transform(AsyncMemcacheServiceImpl.java:629)

at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.convertResponse(MemcacheServiceApiHelper.java:57)

at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:101)

at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:96)

at 
com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:53)

at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:90)
at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:86)
at 
com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:26)

at 
com.google.appengine.api.memcache.MemcacheServiceImpl.putAll(MemcacheServiceImpl.java:115)

at 
com.googlecode.objectify.cache.EntityMemcache.getAll(EntityMemcache.java:230)

at 
com.googlecode.objectify.cache.CachingAsyncDatastoreService.get(CachingAsyncDatastoreService.java:253)

at 
com.googlecode.objectify.impl.AsyncObjectifyImpl.get(AsyncObjectifyImpl.java:68)

at 
com.googlecode.objectify.impl.AsyncObjectifyImpl.find(AsyncObjectifyImpl.java:201)

at 
com.googlecode.objectify.impl.AsyncObjectifyImpl.get(AsyncObjectifyImpl.java:110)

at 
com.googlecode.objectify.impl.AsyncObjectifyImpl.get(AsyncObjectifyImpl.java:143)

at 
com.googlecode.objectify.impl.ObjectifyImpl.get(ObjectifyImpl.java:81)
at 
com.praisemanager.service.CompanyService.getSystemSettings(CompanyService.java:720)

at 




Any help would be greatly appreciated, because our customers are (rightfully) 
very unhappy.


(We'd be on a paid support plan if it was available in our country, but it was 
not last time we checked)

Kind regards
Per

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.


[google-appengine] Re: Application down for almost 2 hours now. Error code 104, and tons of memcache errors

2013-12-05 Thread Per


https://lh3.googleusercontent.com/-3OJ2o9KkGYs/UqEkFP9hIxI/AGU/gycl82E6tLw/s1600/dashboard-1.jpg


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.


[google-appengine] Application outage for 25 minutes now, Error code 121

2013-08-12 Thread Per


Our SAAS application is throwing very unspecific errors since about 20 
minutes on about 50% of the requests (which means we're basically offline). 
Our application ID is small-improvements-hrd. 

A problem was encountered with the process that handled this request, 
causing it to exit. This is likely to cause a new process to be used for 
the next request to your application. (Error code 121)



Tried restarting the instances, but it didn't help. The system status page 
is normal unfortunately. We didn't upload any new code for the past 5 days, 
and everything in the admin console looks just normal. Pingdom verifies 
that the site is essentially down.

We'd be on a paid support plan, if it existed for our country (Germany). 
But since we cannot get official support, I'm posting to the forums in the 
hope of someone being able to help?

Kind regards
Per

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [google-appengine] Re: Announcing a credit for App Engine applications with new custom domains

2013-06-18 Thread Per

This is great news! It will be even greater if this also removes any 
subdomain limits along the way. Our customers love to get a subdomain when 
they purchase our product, but from what I can tell the limit right now is 
20 subdomains per SNI, and you can only have 20 SNIs. Which means, if we 
continue to be successful, we're out of subdomains next year.. 

Anyway, great news that you're working on it in the first place!



On Tuesday, June 18, 2013 1:09:41 AM UTC+2, Andrew Jessup wrote:

 Hey pdnsk, that's what we are working towards, but we're not quite there 
 yet. In the meantime we're offering a one time credit for users who need to 
 purchase a one-user license of Google Apps for business. 
 On Jun 16, 2013 3:53 PM, pdknsk pdk...@gmail.com javascript: wrote:

 It is not clear from your wording what the solution will be. If it
 completely removes Google Apps from the domain setup process, it's
 time to rejoice and dance in the streets!

 --
 You received this message because you are subscribed to the Google Groups 
 Google App Engine group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to google-appengi...@googlegroups.com javascript:.
 To post to this group, send email to 
 google-a...@googlegroups.comjavascript:
 .
 Visit this group at http://groups.google.com/group/google-appengine.
 For more options, visit https://groups.google.com/groups/opt_out.


  

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.




[google-appengine] Re: security issue (strange behavior)

2013-04-13 Thread Per
The easiest way to battle unsophisticated spam is to add a invisible 
honeypot field to your form. Ignore any posts for which the robot filled 
the field. 
http://stackoverflow.com/questions/8873961/how-do-i-add-honey-pot-fields-to-my-forms

Other than that, you will have to live with bots crawling your site. I 
wouldn't say that 100 comments per day is a lot. :)



On Saturday, April 13, 2013 4:37:01 AM UTC+2, @Mlaynes wrote:


 forgot to say .. now, in my graphs you can see few empty recordings, but 
 that's because many of them I've deleted .. and during the attack was 
 averaging 100-200 sex ads per day on average, which of course also I've 
 erased...

 :/(


 help me please !

 @Mlaynes




-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [google-appengine] Re: Every day around 9.10 AM Brussels time, huge drop in GAE performances

2013-02-11 Thread Per

It is indeed a bit embarrassing that nobody at Google picks this up. I only 
visit the forum every two or three days and I noticed this thread. How hard 
can it be for someone at Google to take a look.

But still. I'd also urge you to provide a lot more information. Show us 
data from external sources (Pingdom, NewRelic etc). Run Appstats and post 
the results. Provide more information that highlights better how severe the 
problem is. Show everyone that you have done your homework and that it's 
basically impossible to be your own fault.  It's good practice, and it will 
make it more probable that someone at Google picks this up.  (I'd also add 
increase to F4 unless you already have, since it's better to pay a bit 
extra than to be down, and see if that hels)

Cheers,
Per


On Monday, February 11, 2013 10:28:34 PM UTC+1, gafal wrote:

 I'm afraid to see the same thing happening tomorrow.
 Today my app has almost been unavailable for 30 minutes!

 Could anyone from Google react on this?


 Le lundi 11 février 2013 11:32:31 UTC+1, Sam a écrit :

 One of the reason for this could be that the billing cycle for the day 
 ends/starts at that time.

 Everyday, we see that all running Instances are shut down  new ones go 
 up at this time.

 Sameer



 On Mon, Feb 11, 2013 at 2:25 PM, Philip Kilner ph...@xfr.co.uk wrote:

 Hi Again,


 On 11/02/13 08:33, Philip Kilner wrote:

 There was certainly something odd going on, around 8am UK time today -
 from my PoV, it started at or a whisker before 8am GMT, and lasted c.20
 mins.

  
 Spoke too soon - am still getting anomalous behaviour, specifically 
 spinning (un-served) requests, and console reports no instances - looks 
 like it's having trouble spinning up instances to serve requests. It's 
 improving over time, but is still not what I'd expect.

 Based on what I'm seeing, I'm astonished that this does not show as a 
 spike in the latency on the status page.


 -- 

 Regards,

 PhilK


 e: ph...@xfr.co.uk - m: 07775 796 747

 'work as if you lived in the early days of a better nation'
 - alasdair gray


 -- 
 You received this message because you are subscribed to the Google 
 Groups Google App Engine group.
 To unsubscribe from this group and stop receiving emails from it, send 
 an email to google-appengi...@**googlegroups.com.
 To post to this group, send email to google-a...@googlegroups.**com.
 Visit this group at http://groups.google.com/**
 group/google-appengine?hl=enhttp://groups.google.com/group/google-appengine?hl=en
 .
 For more options, visit 
 https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out
 .





-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[google-appengine] Re: Every day around 9.10 AM Brussels time, huge drop in GAE performances

2013-02-06 Thread Per

While I haven't seen that problem, I'd love to learn more about it. Do you 
have more information other than it being slow? Did you try running 
appstats? Is it db-related, memcache, CPU slowness, or maybe even 
session-related? Google may find out by looking at your app, but us others 
cannot, and I'd love to hear what that actual issue is, in case we run into 
something similar.


On Wednesday, February 6, 2013 9:12:40 AM UTC+1, gafal wrote:

 Happening again today 6th February.
 Can anyone at Google just care? It would really be appreciated...


 Le mardi 5 février 2013 09:18:55 UTC+1, gafal a écrit :

 I've been experiencing this for almost a week now.

 Requests take 10x longer than usual!!

 It seems to start around 9 and stop around 9:30...


 my app id is myagendapro
 Can anyone have a look? 



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at http://groups.google.com/group/google-appengine?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [google-appengine] Re: Console issues?

2013-01-15 Thread Per

We're also still experiencing problems. Latency has increased by about 30% 
: from 850ms pre incident per Pingdom to roughly 1100ms currently.

We're getting some errors in the logs (not as many as during the incident 
fortunately, and not as many as Mark), but we're also getting reports from 
users about errors which we cannot find in the logfiles. It's hard to 
estimate how many of those there are, since GAE doesn't seem to log to the 
logfile when it's serving our static error-html.

App ID is small-improvements-hrd, a Java application on HRD.

Cheers,
Per




On Tuesday, January 15, 2013 10:07:16 PM UTC+1, Mark wrote:

 Hi Chris

   No my application is still not functioning correctly.  Yes, my ID is 
 bedbuzzserver.  I have attached a screenshot of my latest log console (as 
 of 1.06PM).  As you can see, almost every request has either: This 
 request caused a new process to be started for your application, and thus 
 caused your application code to be loaded for the first time.
 Request was aborted after waiting too long to attempt to service your 
 request.
 A problem was encountered with the process that handled this request, 
 causing it to exit.
 I haven't uploaded new code in months, and this used to be working fine.- 
 Mark

 On Tuesday, January 15, 2013 12:13:20 PM UTC-8, Chris Ramsdale wrote:

 Mark,

 Your application should be functioning correctly.  Let me know if this 
 isn't the case.  Also, I'm assuming that this is app ID: bedbuzzserver.

 -- Chris


 On Tue, Jan 15, 2013 at 12:05 PM, Mark markrobe...@gmail.com wrote:

 My app is totally down.  I have been complaining about my response times 
 getting worse and worse on this thread, 
 https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/cJcOrOE4JDcand
  also in a bug I created.  Why is it Google doesn't listen, until it is 
 too late?

 Also for the love of everything good - please update the App Engine 
 Status page to reflect real life.  For me, for the past few weeks App 
 Engine has been unstable.


 On Tuesday, January 15, 2013 11:37:05 AM UTC-8, Chris Ramsdale wrote:

 We continue to work at a resolution in regard to current App Engine 
 issue. Error rates should continue to decline for affected applications 
 and 
 we will provide another status update by 12:00 PM PST.

 -- Chris

 Product Manager, Google App Engine


 On Tue, Jan 15, 2013 at 11:00 AM, Chris Ramsdale cram...@google.comwrote:

  We are still working to resolve the issue related to Google App 
 Engine serving. At this point error error rates for affected applications 
 should be declining. We will provide another status update by 11:30 AM 
 PST.
  
 -- Chris

 Product Manager, Google App Engine


 On Tue, Jan 15, 2013 at 10:29 AM, Chris Ramsdale 
 cram...@google.comwrote:

  We are currently experiencing an issue with Google App Engine and 
 some applications are experiencing elevated latency levels and error 
 rates. 
 For everyone who is affected, we apologize - we know you count on Google 
 to 
 work for you and we're working hard to restore normal operation. We will 
 provide an update by 11 AM PST with current details, and if available an 
 estimated time for resolution.

 -- Chris

 Product Manager, Google App Engine


 On Tue, Jan 15, 2013 at 10:26 AM, Alexandru Farcaş 
 alex@expert-group.biz wrote:

  For my application the number of paying instances has increased to 
 30 (from 3) and is rising...


 On Tuesday, January 15, 2013 8:23:41 PM UTC+2, Jim Briggs wrote:

 Similar problems.  No instances are accessible and deployments 
 fail.  Latest error due to an error reading the deployed files.

 On Tuesday, January 15, 2013 1:20:04 PM UTC-5, Joakim wrote:

 This is causing my instances to fail to start within 60 seconds. I 
 currentyl have zero instances, and every attempt to start a new one 
 fails.

 On Tuesday, January 15, 2013 7:12:30 PM UTC+1, hyperflame wrote:


 On Tuesday, January 15, 2013 11:58:11 AM UTC-6, Janusz Skonieczny 
 wrote: 

 The issue may be wider. My application started to show default 
 error and timeout error static pages (those setup in app.yamls 
 error_handlers)

  
 +1.
  
 Seeing a massive spike in latency on my end. Servlets that 
 normally handle requests in 0.5 seconds are taking 4+ seconds to 
 complete. 
 Instance startup times are up 30%. 

  -- 
 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/-/**AWkkFhNEG-QJhttps://groups.google.com/d/msg/google-appengine/-/AWkkFhNEG-QJ
 .
  
 To post to this group, send email to google-a...@googlegroups.**com.
 To unsubscribe from this group, send email to google-appengi...@**
 googlegroups.com.

 For more options, visit this group at http://groups.google.com/**
 group/google-appengine?hl=enhttp://groups.google.com/group/google-appengine?hl=en
 .




  -- 
 You received this message because you are subscribed

[google-appengine] Re: Error deploying

2012-12-18 Thread Per
Yes, you're not alone :) 

I'm trying to mitigate the Taskqueue-Problem with a quick code-change... 
but I run into the same error as you are.

Cheers,
Per



On Tuesday, December 18, 2012 7:42:37 PM UTC+1, Thiago Catoto wrote:

 Hi,

 Is someone having issues deploying a new version on GAE?

 I keep getting this and allways got the same error:

 ===

 04:34 PM Cloned 600 files.
 04:35 PM Uploading 1 files and blobs.
 04:39 PM Rolling back the update.
 Error 500: --- begin server output ---

 htmlhead
 meta http-equiv=content-type content=text/html;charset=utf-8
 title500 Server Error/title
 /head
 body text=#00 bgcolor=#ff
 h1Error: Server Error/h1
 h2The server encountered an error and could not complete your 
 request.pIf the problem persists, please A HREF=
 http://code.google.com/appengine/community.html;report/A your problem 
 and mention this error message and the query that caused it./h2
 h2/h2
 /body/html
 --- end server output ---

 Password for tca...@gmail.com javascript:: If deploy fails you might 
 need to 'rollback' manually.
 The Make Symlinks... menu option can help with command-line work.
 *** appcfg.py has finished with exit code 1 ***

 ===

 any tips??
  

-- 
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/-/v0a51E7z3YsJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Server Error. Application Down. Java. HRD.

2012-12-06 Thread Per

Thankfully I saw the error while testing a newly deployed version, and 
before taking it live. That would have been very embarrassing -- the day 
before had already encuntered a 30 minute window of up to 20% of memcache 
errors, which affected our clients as well (in the form of 500 error pages, 
which IMO should not happen due to Memcache in the first place, but that's 
another story). 

http://code.google.com/status/appengine/detail/memcache/2012/12/05#ae-trust-detail-memcache-get-error_rate
 


I can't help it, but I have to (yet again) complain about reliability of 
App Engine. It's a marvellous piece of technology, and feature-wise it has 
come such a long way since I started using it two years ago. But it's 
causing me more and more headache the more mature it gets. I was expecting 
it to be the other way round when I started.

I'm doing a presentation about GAE at the Berlin Java User Group next week. 
While I will praise all the cool features of App Engine, I have the feeling 
that I won't convert a single attendee once I mention the errors we keep 
running into. Which is sad, because I do want GAE to prosper.

Cheers,
Per




On Thursday, December 6, 2012 6:08:51 AM UTC+1, Takashi Matsuo (Google) 
wrote:

 Hi prashant,

 It's good to see the comment on the issue saying that your app is now OK. 
 Thanks for reporting!


 On Wed, Dec 5, 2012 at 7:32 PM, prashant prashan...@gmail.comjavascript:
  wrote:

 Users are impacted. Production issue has been raised.

 http://code.google.com/p/googleappengine/issues/detail?id=8511

 Can you please check.

 We are getting this exception  a 500 error. 

 java.lang.NoClassDefFoundError: Could not initialize class 
 com.google.appengine.api.datastore.DatastoreAttributes
  at 
 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.getDatastoreAttributes(AsyncDatastoreServiceImpl.java:985)
  at 
 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.getDatastoreType(AsyncDatastoreServiceImpl.java:977)
  at 
 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.get(AsyncDatastoreServiceImpl.java:284)
  at 
 com.google.appengine.api.datastore.DatastoreServiceImpl$1.runInternal(DatastoreServiceImpl.java:78)
  at 
 com.google.appengine.api.datastore.DatastoreServiceImpl$1.runInternal(DatastoreServiceImpl.java:75)
  at 
 com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:31)
  at 
 com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:75)
  at 
 com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:62)
  at 
 com.google.apphosting.runtime.jetty.DatastoreSessionStore.getSession(DatastoreSessionStore.java:82)
  at 
 com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java:338)





 Thanks.

 -- 
 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/-/P9EyMaLNEt4J.
 To post to this group, send email to 
 google-a...@googlegroups.comjavascript:
 .
 To unsubscribe from this group, send email to 
 google-appengi...@googlegroups.com javascript:.
 For more options, visit this group at 
 http://groups.google.com/group/google-appengine?hl=en.




 -- 
 Takashi Matsuo | Developers Advocate | tma...@google.com javascript:

  

-- 
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/-/yIu2J1rgY1YJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: instance scheduling mystery

2012-12-06 Thread Per
Hi Peter,

I currently have the pending latency slider set to 14.9 secs min and 15.0 
 secs max. I have also set it to auto/auto per tips in other threads but 
 can't tell a difference.


That's most likely your problem.  Check out this video: 
http://www.youtube.com/watch?feature=player_embeddedv=zQ5_47zy4bY#! from 
25:45 onwards. You don't want to micro-manage the scheduler too much, or it 
will get confused. The scheduler may not be great for low usage apps, but 
it can do a lot better than what you're seeing. I'd recommend only having 
one resident instance. We're using 1 - automatic for instances and auto 
- auto for pending latency. We have about 1-2 requests per second during 
the week, but maybe only 0.2 on the weekend, so its close enough to what 
you have.

Cheers,
Per



On Thursday, December 6, 2012 10:19:03 PM UTC+1, Peter Warren wrote:

 Despite having very low request volume (about 1 request / 8 seconds), low 
 latency (1 sec avg) and having 3 dedicated instances, our application 
 still suffers from frequent warmup requests.

 See attached charts for requests, instances, and latency.

 All our app does is serve static resources and items from memcache, and I 
 don't see any OOM exceptions in our logs, so I don't think we're churning 
 instances because of memory limits.

 I figured I could try brute-forcing things and upped our dedicated # of 
 instances to 5. That didn't help at all and only costs us more money. Look 
 at the attached instances chart. Google is now using an avg of about 8 
 instances to serve exactly the same volume as 5 instances handled 
 previously. It does look like our latency decreased a bit, but we still get 
 tons of warmup requests.

 I currently have the pending latency slider set to 14.9 secs min and 
 15.0 secs max. I have also set it to auto/auto per tips in other 
 threads but can't tell a difference.

 So 2 questions:
 1) why does Google need more than 3 instances to serve 1 relatively 
 low-load request every 8 seconds??? I would think 3 dedicated instances 
 should be far more than sufficient for 1 request / 8 seconds.

 2) how come the number of instances seems unrelated to load? I would think 
 that more dedicated servers would mean fewer dynamic instances would be 
 created (assuming of course that the dedicated servers are under a 
 manageable load). That doesn't seem to be the case.

 Thanks for any insights!

 Peter


-- 
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/-/yS977aD3Z-gJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Latency doubled since Nov 19 -- our Pingdom stats look pretty awful

2012-11-27 Thread Per
Okay, I'll continue my conversation with myself here.

Someone fixed it! It's not unicorn land yet, but *substantially* faster. 
Hovering around 800ms according to Pingdom now. Which I guess is fine: 
Pingdom requests include session creation cost each time, so regular 
requests would be faster. 

Well done Googlers!

I'm wondering what latencies others are seeing if measured from the 
outside? Anyone care to share their secrets?

-- 
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/-/-99DUs63HAYJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: GAE keeps starting new instances causing lots of user facing loading requests

2012-11-27 Thread Per

We had a very similar problem (see my other post). It's resolved since two 
days or so, after some quite bumpy weeks. Latency is down, and spikyness 
of the dashboard charts is down too, everything runs a lot smoother since 
yesterday.

 Maybe we're just lucky, but maybe also something has actually been 
reconfigured and we're just the first who moved to new smarter settings, 
and you'll follow soon.

Do you guys happen to use https by the way, and do you track latency 
externally like with Pingdom or so?

Cheers,
Per



On Wednesday, November 28, 2012 1:32:25 AM UTC+1, Nik Eleftheriou wrote:

 I can confirm that we are seeing same behaviour in our app.
 we can usually serve everyone with 6 instances, but in the last 6 weeks 
 something has been changed and even though at any one time we have 6-7 
 instances, we have 1000 warmups a day.

 so definitely something caused the scheduler to change behaviour as we 
 only had 10 warmups a day before Oct.
 We've not made any code changes to our app in 5 months.

 nik.

 On Saturday, November 17, 2012 3:31:42 PM UTC, Francois Masurel wrote:

 After checking my logs for warming requests I can see that new instances 
 have been started every 3 to 4 minutes for the last hours.

 Is this normal behavior ?



 On Saturday, November 17, 2012 4:21:28 PM UTC+1, Francois Masurel wrote:

 I've notice lots of user facing loading requests since a few hours 
 (days?).

 Just check the screenshot below.  Two new instances have been started to 
 serve only 13 (12 + 1) requests though another instance was already running 
 and available and obviously was not overloaded as it had only served 105 
 requests during the last hour :


 https://lh4.googleusercontent.com/-UxI0M8fnvw0/UKep9Wkb_VI/wN0/wxKaPhZvXlI/s1600/Instances+-+VinoCities+-+Google+Chrome.jpg

 My application instance settings are all set to automatic and pending 
 latency set to 10s :


 https://lh4.googleusercontent.com/-TxgVTyTvqJM/UKeqaNNQvBI/wN8/fKUP3ftluk8/s1600/Application+Settings+-+VinoCities+-+Google+Chrome.jpg

 Did something change on GAE side recently ?

 These user facing loading requests are really killing my business as my 
 users are getting really upset about it.

 Thanx for your help.

 François

 App Id = vncts1



-- 
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/-/ey3AsWmJ6DwJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Random Server Errors which don't show up in logs, only on the dashboard statistics (and when you run into them)

2012-11-23 Thread Per





https://lh4.googleusercontent.com/-_3no8_wP8W4/UK_4ZzGFX-I/AE8/uUCoytxQw6g/s1600/Dashboard+-+Small+Improvements-2.png

I just read Christina's postmortem analysis on the Downtime forum. 

It's interesting that the errors I reported above started around the 19th 
(when the configuration was changed) and ended on the 22nd (after the 
outage).
https://lh4.googleusercontent.com/-_3no8_wP8W4/UK_4ZzGFX-I/AE8/uUCoytxQw6g/s1600/Dashboard+-+Small+Improvements-2.png

https://lh4.googleusercontent.com/-_3no8_wP8W4/UK_4ZzGFX-I/AE8/uUCoytxQw6g/s1600/Dashboard+-+Small+Improvements-2.png



Who knows, maybe the entire outage could have been avoided by analysing our 
bug report in time :) Well, at least the error I described above is now 
gone, without any action on our end. 

Cheers,
Per





On Wednesday, November 21, 2012 3:16:24 AM UTC+1, Per wrote:

 AppID is small-improvements-hrd. 

 We are seeing plenty of server errors which leave no traces in the log 
 files, but we and our users keep running into them, and it simply shows as 
 Server Error written in black on a white empty screen.

 This seems to have started about 6 to 8 hours ago. First we also had other 
 server issues (causing 500 errors) but after restarting our servers since 
 memory consumption seemed high, those 500-errors went away. Now we're stuck 
 with server errors that we cannot properly identify and that are hard to 
 report. Any ideas?






 Like always, I'd like to point out that I wouldn't be posting such a 
 trivial support request to the forums, but since I've rarely (never?) heard 
 back from previous support requests, I guess this is the best way. See 
 Brandon's post for stronger wording :) 

 Cheers,
 Per



-- 
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/-/_DfCtiWzIQYJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Latency doubled since Nov 19 -- our Pingdom stats look pretty awful

2012-11-23 Thread Per


Hi App Engine team,

my Pingdom stats for a JSON request that does nothing at all has doubled 
(on average) since November 19.

Since your post-mortem for the recent outage mentions you made a poor 
performance config-change on that day, I'm pretty sure it has to do with it:

* Our app (small-improvements-hrd) is on a custom domain, and it's on 
https
* Appstats confirms that these no-op requests do nothing (except create a 
session) and they take some 100 to 200ms to do so
* The time in the log file is shown as 500 to 2500ms though
* And Pingdom consistently shows 200 to 2500ms as well
* Our average per Pingdom was 700ms until November 19, and now it's 1400ms. 


https://lh3.googleusercontent.com/-z3biVzfKyqk/ULAWzA-2jAI/AFM/RZC5_qkkg-E/s1600/Response+Time+Report+noop.png


It's as if one extra roundtrip was added somewhere. Maybe the algorithm you 
described in the post-mortem *still* does something very inefficient?

Just to be sure, our other Pingdom check (which pulls our website front 
page) has also doubled. But the no-op is probably more relevant, since it 
really does nothing at all except return 1 byte.



https://lh5.googleusercontent.com/-7N_St4j2kN0/ULAXJ7FZudI/AFU/yBIF62LKHHU/s1600/Response+Time+Report+website.png





Cheers,
Per





-- 
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/-/ZjsqBXwt_h8J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Latency doubled since Nov 19 -- our Pingdom stats look pretty awful

2012-11-23 Thread Per



And for the big picture, here's our performance stats for the past 1.5 
years:

https://lh5.googleusercontent.com/-TYq3YsOfgL8/ULAbUiqW3KI/AFk/zbPWOlqZlG0/s1600/Response+Time+Report.png




Naturally we *did* make changes to the landing page in those 18 months, so 
of course it has to be taken with a grain of salt. And we added https 6 
months ago. 

However, both our Java Profiler and Appstats tell us the landing page has 
no major flaws. So a large share of the slowdown will have to do with App 
Engine IMO. Also note that we switched to F2 and then F4 over time, and we 
always have at least 2 instances running now. While both measures smoothen 
out the spikyness of the stats (and things go really bad when we move to F2 
or just one VM) these expensive actions have almost no effect on the longer 
term trend either. Latency continues to go up.

Any help or suggestions would of course be greatly appreciated! 

Cheers,
Per



-- 
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/-/FsdUfR9ywaEJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Looks like appengine is down

2012-11-22 Thread Per
Wholeheartedly agree. 

Can't blame them that the system has issues every now and then. I'm sure 
it's a massively complex system, and other products have their issues too. 
But what's the point in showing a Google-branded generic error message to 
our clients. The nonchalant Try again in 30 seconds. That's all we know  
is adding insult to injury. 

When the next outage strikes, I'd like to see something like The 
application hosted in our data center can currently not be reached. We 
apologise. We're working on restoring our client's service. Please try 
again later. The team at Google.  


Cheers,
Per




On Friday, November 23, 2012 2:24:19 AM UTC+1, Brandon Wirtz wrote:

 http://appengine.google.com/ 500s and All of our sites are down. 

  

 So is 
 https://developers.google.com/*appengine*/kb/*status*https://developers.google.com/appengine/kb/status
 **

  

 So is code.google.com/*status*/*appengine*

 * *

 Happy Thanksgiving. Aren’t you glad you are on appengine where you can 
 call someone 24/7 and get a reassurance that someone knows things are going 
 wrong and they are working on it?

 And you can get a status page that says when the issue will be resolved, 
 and a notification that your site is down so you don’t have to get a call 
 from your CEO? Don’t you enjoy the time with your family on the holiday 
 knowing that you can have peace of mind knowing that you have great uptime. 
 And with Black Friday and Cyber Monday aren’t you glad you can trust that 
 Google has prepared for the surge in traffic that is coming and that your 
 service will be up?

  

 Yeah, Me Niether.

  


-- 
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/-/fKsrD_7UHUIJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: This is my app!

2012-10-18 Thread Per
We're neighbours! 


On Thursday, October 18, 2012 10:34:02 AM UTC+2, pdknsk wrote:

 You cannot easily tell, but I have it on good authority that an 
 instance of one of my apps is currently hosted in the first (from the 
 top) green wired board, second rack from the right. 

 http://www.google.com/about/datacenters/gallery/#/all/20 


-- 
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/-/MdPK_ZmWjMgJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Hundreds of 500-pages out of the blue. All related to database errors (An error occurred parsing (locally or remotely) the arguments to DATASTORE_V3.Get())

2012-10-09 Thread Per

This error has been striking again, and our customers had the impression 
the site was down for about two hours. Our customers are complaining and I 
am really unhappy about this too. I've raised an issue on the tracker 
(http://code.google.com/p/googleappengine/issues/detail?id=8233). 

I know that it's impossible to build an error-free system, and I applauded 
the most recent 1.7.2 release for all the bugfixes it contained. But 
several hours of database problems, for the fourth time in about one week, 
is starting to hurt. I'd like to urge you to continue down the path of 
fixing bugs above all. Reliability and availability are the only concerns I 
have about App Engine. I'm entirely satisfied with the existing feature 
set, and happy to integrate external services (e.g. for email sending) when 
reaching limitations of app engine. But reliability of the core service and 
database cannot be outsourced, and having to write post mortems (or 
reimbursing clients that are affected) more than once every few months is 
not an option.

Cheers,
Per




-- 
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/-/IQ8hmHV0TJkJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Hundreds of 500-pages out of the blue. All related to database errors (An error occurred parsing (locally or remotely) the arguments to DATASTORE_V3.Get())

2012-10-04 Thread Per

Hi Takashi,

Here is the last request of one of these spikes, just search backwards from 
there.

59.167.133.100 - - [03/Oct/2012:16:56:02 -0700] GET / HTTP/1.1 500 0 
http://small-improvements.com/; Mozilla/5.0 
(Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/537.4 (KHTML, like Gecko) 
Chrome/22.0.1229.79 Safari/537.4 
www.small-improvements.com ms=2463 cpu_ms=2210 exit_code=103 
instance=00c61b117ca2c5dd4a6002dd13f39c6296da66 
https://appengine.google.com/instances?app_id=s%7Esmall-improvements-hrdversion_id=1.362133182361985490key=00c61b117ca2c5dd4a6002dd13f39c6296da66#00c61b117ca2c5dd4a6002dd13f39c6296da66

 
Also, you have my application ID (small-improvements-hrd), and I gave you 
the general time. The log file is full of these errors, as you can see from 
the screenshot spikes. I have no idea why you wouldn't be able to find 
these? Does your search tool really yield no errors?  Then it must be 
fundamentally broken. If I run a search I get hundreds of stacktraces.

Of course I also raised a production error too, which has the exact time. I 
would have sent you a bug tracker ID for my production issue, if your bug 
tracker had such a thing. Every support system I've worked with in the past 
10 years sends IDs in an email receipt. Yours does not. It seems to be GAE 
policy to keep customers in the dark, and this makes it a lot harder to 
tell you about issues -- but you do have my application ID and my name, so 
it shouldn't be hard to retrieve it that way either. 

Cheers,
Per




On Thursday, October 4, 2012 9:22:39 AM UTC+2, Takashi Matsuo (Google) 
wrote:

 Hi Per,

 Sorry, but I'm not able to locate the log you pasted. Can you confirm the 
 actual time(or time period) of the occurrence?
 Do you still see the issue? If yes, can you file a production issue on our 
 issue tracker with more details?

 -- Takashi


 On Thu, Oct 4, 2012 at 5:07 AM, Per per.fr...@gmail.com javascript:wrote:


 https://lh4.googleusercontent.com/-CQmIN9Qm_cY/UGyaOGMP9iI/AEU/zeYKUS7dxkc/s1600/Dashboard+-+Small+Improvements-1.jpg


 I only realised after posting the other thread (about the response time 
 increase) that we're actually encountering hundreds and hundreds of database 
 errors.

 As always, the log file doesn't tell me anything. It's the generic 
 DATASTORE_V3.Get() all over. We didn't make any deployment, we didnd't 
 change any code recently, the load pattern

 didn't change, and there is no common trend either. The errors occur for an 
 hour or so, strike everywhere (dozens of different clients are affected) and 
 then the problem disappears
 for a few hours.

 Here's the stacktrace again (from about 90 minutes ago):

 https://www.small-improvements.com/dashboard
 javax.servlet.ServletException: 
 com.google.apphosting.api.ApiProxy$ArgumentException: An error occurred 
 parsing (locally or remotely) the arguments to DATASTORE_V3.Get().
  at 
 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:268)
  at 
 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  at org.mortbay.jetty.Server.handle(Server.java:326)
  at 
 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
  at 
 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
  at 
 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
  at 
 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
  at 
 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:447)
  at 
 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:452)
  at 
 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:459)
  at com.google.tracing.TraceContext.runInContext(TraceContext.java:701)
  at 
 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:336)
  at 
 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:328)
  at 
 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:456)
  at 
 com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
  at java.lang.Thread.run(Thread.java:679)
 Caused by: com.google.apphosting.api.ApiProxy$ArgumentException: An error 
 occurred parsing (locally or remotely) the arguments to DATASTORE_V3.Get().
  at 
 com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:464)
  at 
 com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:392)
  at 
 com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:781)
  at 
 com.google.tracing.TraceContext$TraceContextRunnable$1.run

Re: [google-appengine] Hundreds of 500-pages out of the blue. All related to database errors (An error occurred parsing (locally or remotely) the arguments to DATASTORE_V3.Get())

2012-10-04 Thread Per
Hi Takashi,

you're right, it seems to have stopped now. The response time is still a 
bit high, so I'm fearing the error could strike again, but at least right 
now nothing bad is happening.

I'm always searching using 'HTTP/1.1 500' to identify failed requests, and 
I ignore the error level. Maybe I have to rework our logging in that 
regard, sorry if that confused you. 

I guess I'll stop using the raise production error feature then, I 
thought it was the preferred way of raising problems these days. Glad to 
hear it's not! And thanks for passing this on the engineering team :)

Cheers,
Per
 

On Thursday, October 4, 2012 1:03:20 PM UTC+2, Takashi Matsuo (Google) 
wrote:


 Hi Per,

 I have informed this issue to the engineering team. Thanks for the report.
 Anyway, it seems that now the error stopped. Can you confirm?

 -- Takashi



 On Thu, Oct 4, 2012 at 7:34 PM, Takashi Matsuo tma...@google.comjavascript:
  wrote:


 Hi Per,

 I couldn't find the logs because I searched for 'Error' severity. Sorry 
 about that. Now I can see your warning logs, escalating it to the 
 engineering team.

 If you want to have a tracker ID, please use our issue tracker at:
 http://code.google.com/p/googleappengine/issues/list

 As you say, the 'Report production issue' feature in the admin console 
 lacks a tracking feature, so we're re-thinking about this tool.

 -- Takashi
  

 On Thu, Oct 4, 2012 at 6:41 PM, Per per.fr...@gmail.com javascript:wrote:


 Hi Takashi,

 Here is the last request of one of these spikes, just search backwards 
 from there.

 59.167.133.100 - - [03/Oct/2012:16:56:02 -0700] GET / HTTP/1.1 500 0 
 http://small-improvements.com/; Mozilla/5.0 


 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/537.4 (KHTML, like Gecko) 
 Chrome/22.0.1229.79 Safari/537.4 
 www.small-improvements.com ms=2463 cpu_ms=2210 exit_code=103 
 instance=00c61b117ca2c5dd4a6002dd13f39c6296da66 
 https://appengine.google.com/instances?app_id=s%7Esmall-improvements-hrdversion_id=1.362133182361985490key=00c61b117ca2c5dd4a6002dd13f39c6296da66#00c61b117ca2c5dd4a6002dd13f39c6296da66

  
 Also, you have my application ID (small-improvements-hrd), and I gave 
 you the general time. The log file is full of these errors, as you can see 
 from the screenshot spikes. I have no idea why you wouldn't be able to find 
 these? Does your search tool really yield no errors?  Then it must be 
 fundamentally broken. If I run a search I get hundreds of stacktraces.

 Of course I also raised a production error too, which has the exact 
 time. I would have sent you a bug tracker ID for my production issue, if 
 your bug tracker had such a thing. Every support system I've worked with in 
 the past 10 years sends IDs in an email receipt. Yours does not. It seems 
 to be GAE policy to keep customers in the dark, and this makes it a lot 
 harder to tell you about issues -- but you do have my application ID and my 
 name, so it shouldn't be hard to retrieve it that way either. 

 Cheers,
 Per





 On Thursday, October 4, 2012 9:22:39 AM UTC+2, Takashi Matsuo (Google) 
 wrote:

 Hi Per,

 Sorry, but I'm not able to locate the log you pasted. Can you confirm 
 the actual time(or time period) of the occurrence?
 Do you still see the issue? If yes, can you file a production issue on 
 our issue tracker with more details?

 -- Takashi


 On Thu, Oct 4, 2012 at 5:07 AM, Per per.fr...@gmail.com wrote:


 https://lh4.googleusercontent.com/-CQmIN9Qm_cY/UGyaOGMP9iI/AEU/zeYKUS7dxkc/s1600/Dashboard+-+Small+Improvements-1.jpg


 I only realised after posting the other thread (about the response time 
 increase) that we're actually encountering hundreds and hundreds of 
 database errors.

 As always, the log file doesn't tell me anything. It's the generic 
 DATASTORE_V3.Get() all over. We didn't make any deployment, we didnd't 
 change any code recently, the load pattern



 didn't change, and there is no common trend either. The errors occur for 
 an hour or so, strike everywhere (dozens of different clients are 
 affected) and then the problem disappears
 for a few hours.

 Here's the stacktrace again (from about 90 minutes ago):



 https://www.small-**improvements.com/dashboard 
 https://www.small-improvements.com/dashboard
 javax.servlet.**ServletException: 
 com.google.apphosting.api.**ApiProxy$ArgumentException: An error occurred 
 parsing (locally or remotely) the arguments to DATASTORE_V3.Get().
   at 
 com.google.apphosting.runtime.**jetty.AppVersionHandlerMap.**handle(AppVersionHandlerMap.**java:268)
   at 
 org.mortbay.jetty.handler.**HandlerWrapper.handle(**HandlerWrapper.java:152)
   at org.mortbay.jetty.Server.**handle(Server.java:326)
   at 
 org.mortbay.jetty.**HttpConnection.handleRequest(**HttpConnection.java:542)
   at 
 org.mortbay.jetty.**HttpConnection$RequestHandler.**headerComplete(HttpConnection.**java:923)
   at 
 com.google.apphosting.runtime.**jetty.RpcRequestParser.**parseAvailable(**RpcRequestParser.java:76

[google-appengine] Average response time went from 400ms to 800ms about 36 hours ago, and is still up there

2012-10-03 Thread Per

Hi GAE team,

there might be some issue with recent maintenance you're doing under the 
covers. We didn't change any code, the load pattern didn't change, and 
additionally we're seeing a several bugs: An error occurred parsing 
(locally or remotely) the arguments to DATASTORE_V3.RunQuery(). 


I know that hiccups can happen on GAE, so it's not like I'm flagging this 
instantly. But the change doesn't go away, and 36h of  decreased 
performance is starting to hurt. 


Here's one of the error stacktraces I'm seeing:

Caused by: com.google.apphosting.api.ApiProxy$ArgumentException: An error 
occurred parsing (locally or remotely) the arguments to 
DATASTORE_V3.RunQuery(). at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:781)
 
at 
com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:459)
 
at com.google.tracing.TraceContext.runInContext(TraceContext.java:701) at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:336)
 
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:328)
 
at 
com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:456) 
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:823)
 
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.success(RpcStub.java:808)
 
at 
com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:893)
 
at 
com.google.net.rpc3.impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:798)
 
at 
com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1063)
 
at 
com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:911) 
at 
com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2265)
 
at 
com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2068)
 
at 
com.google.net.rpc3.impl.client.RpcNetChannel.access$2000(RpcNetChannel.java:143)
 
at 
com.google.net.rpc3.impl.client.RpcNetChannel$TransportCallback.receivedMessage(RpcNetChannel.java:3127)
 
at 
com.google.net.rpc3.impl.client.RpcChannelTransportData$TransportCallback.receivedMessage(RpcChannelTransportData.java:599)
 
at 
com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:417)
 
at 
com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260)
 
at 
com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121) 
at 
com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:578) 
at 
com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1002)
 
at 
com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:884)
 
at 
com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:136)
 
at 
com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1855)
 


And here's a picture of the response time increase, taken about 24 hours 
ago:


https://lh4.googleusercontent.com/--Lf5oZY3xCc/UGyR0weY_SI/AEE/AZeG_6QToNM/s1600/Dashboard+-+Small+Improvements.jpg


Application ID is small-improvements-hrd, we're on HRD, and we were on F2 
when this happened. Changing to F4 didn't make a difference, neither did 
restarting the instances. Which would have surprised me anyway, since it 
seems to be database related. I'd investigate further, but I'm on vacation. 
I hope this can be solved by moving us to a different cluster for now?

Kind regards,
Per



-- 
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/-/cyeWlHvzoDYJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Hundreds of 500-pages out of the blue. All related to database errors (An error occurred parsing (locally or remotely) the arguments to DATASTORE_V3.Get())

2012-10-03 Thread Per
(UdrpcTransport.java:265)
at 
com.google.apphosting.runtime.udrpc.UdrpcTransport.readPackets(UdrpcTransport.java:217)
at 
com.google.apphosting.runtime.udrpc.UdrpcTransport$1.run(UdrpcTransport.java:81)
at 
com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260)
at 
com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
at 
com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:578)
at 
com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1002)
at 
com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:884)
at 
com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:136)
at 
com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1855)


And this is the error spike distribution today:


 
https://lh4.googleusercontent.com/-CQmIN9Qm_cY/UGyaOGMP9iI/AEU/zeYKUS7dxkc/s1600/Dashboard+-+Small+Improvements-1.jpg


I find it very frustrating that GAE is so inconsistent. We had severe issues 
two months ago and had to reimburse several clients for downtimes caused by 
very similar problems. Then it was fine for 2 months,
and just when I go on vacation, it breaks down again. Anything I can do on my 
end?


Cheers,
Per



-- 
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/-/U9KKQ-WMZ98J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Google App Engine SDK 1.7.2 is out

2012-09-23 Thread Per

Thanks Takashi and everyone on the GAE team. 

It's great to see how many bugfixes you squeezed in, and I'd like to 
applaud the effort!  Keep it up. Shiny new toys get people more excited and 
are probably harder to justify to certain stakeholders, but as a customer I 
can sleep a lot better at night knowing that quality is high on your 
agenda. Releases like this give me the confidence I need to be recommending 
GAE to others again. So kudos to you all for such a boring yet bold 
release! :)

Cheers,
Per




On Thursday, September 20, 2012 12:26:40 PM UTC+2, Takashi Matsuo (Google) 
wrote:


 Hi everyone,

 We're happy to announce that we released the 1.7.2 SDK.

 This release includes several new features including the trusted tester 
 program of App Engine outbound socket, as well as huge amount of bug fixes.

 For more details, please read our blog post and release notes.

 Announcement:
 http://googleappengine.blogspot.com.au/2012/09/app-engine-172-released.html

 Release notes for Java:
 http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes

 Release notes for Python:
 http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes

 Enjoy!

 -- 
 Takashi Matsuo | Developers Advocate | tma...@google.com javascript:

  

-- 
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/-/Mn75qzVakQAJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: APP DOWN: App suddenly no longer starts, no code changes

2012-09-13 Thread Per
Hi Peter,

I'm sure it's extremely(!) hard to host this many applications reliably and 
at a sane cost. I won't try to make any suggestions about that.  But what 
concerns me is the support situation on App Engine. It shouldn't be too 
hard to monitor a low-bandwidth forum like this, and to provide somewhat 
timely feedback when downtime is being reported by some of the most senior 
users, during a time when you're actually rolling out changes.

I can understand that you don't want to turn this into an official support 
forum for all the dumb question we see here, and I can understand that you 
want to encourage us to purchase premium accounts. But I feel you're 
hurting your own business by not responding swiftly to posts like these. 
We've been through similar issues with our application, and the support 
situation is really the one thing that stops me from recommending App 
Engine wholeheartedly. I bet I'm not the only one. :) When discussing your 
strategies, it would be great if you could consider improved 
responsiveness too.

Cheers,
Per




On Thursday, September 13, 2012 8:12:35 PM UTC+2, psm wrote:

 Jeff,

 these are good ideas and suggestions.  we are working on a number of 
 different strategies to ameliorate these issues.  some of the items you are 
 suggesting are already in progress, and others besides.  and i agree that 
 this is a general philosophical challenge with PaaS.  on GAE we now 
 regularly serve several hundreds of thousands of applications, so it is 
 indeed a challenge to handle the long tail problem.  we are aware of 
 this, and you should expect us to be rolling out a number of things to 
 address it.  in fact, we expect to make our experience of running this 
 large workload over a long period of time into an advantage with GAE. 

 Peter S Magnusson
 (GAE Eng Dir)


 On Wednesday, September 12, 2012 5:35:39 PM UTC-7, Jeff Schnitzer wrote:

 On Wed, Sep 12, 2012 at 3:12 PM, Kaan Soral kaan...@gmail.com wrote: 
  This is why I love App Engine, when a problem occurs instead of having 
 a 
  heart attack or committing suicide, you can just wait for it to be 
 resolved. 

 Hmmm.  This really unfortunately timed incident may have cost us an 
 important client, so I'm not feeling the love. 

 I have quite a lot of experience building and running large online 
 systems prior to embracing GAE and my products have never had as much 
 downtime as I've had over the last year.  It hasn't always been 
 Google's fault (the entire .st registry going down for 8+ hours really 
 sucked[1]) but it usually has been.  See: 

  * Instance startup time ballooning by 3X and hitting deadlines 
 (multiple occasions) 
  * GAE blocking CloudFlare with an undocumented security system 
  * This incident, where Java instances started mysteriously failing 

 Would waiting have fixed these issues?  I'm not convinced.  Google may 
 have smart people running GAE but they aren't watching _my_ app, 
 they're just watching for an uptick in the number of complaints.  If 
 you're doing something slightly unusual (say, running a CF reverse 
 proxy), you might be statistical noise.  Apparently this Java problem 
 _was_ widespread, but I had no way of knowing that. 

 GAE's value proposition is that it's better to have Google's smart 
 engineers building and maintaining your infrastructure.  But my site 
 would be more reliable if I had one dumb person (possibly me) who 
 cares specifically about _my_ infrastructure.  I've screwed up 
 deployments and upgrades in production before, but at least I'm aware 
 when changes happen, get immediate feedback, and can fix the problem 
 right then and there. 

 With GAE, the only thing I can do when my alarms go off is to whine as 
 loudly as possible.  But there is no feedback!  I have no way of 
 knowing if Google is working on the problem or if they're still 
 waiting for more complaints that will never materialize.  Will I be 
 down for 15 minutes, 1 hour, 2 hours, 8 hours, forever?  How long do 
 you want to wait? 

 This feels like a fundamental flaw in the PaaS concept, destined to 
 produce multiple-hour downtimes at irregular intervals.  The feedback 
 loop is too slow (and lossy if the problem is not widespread). 
 There's no amount of QA or testing that will prevent failures in a 
 system as big as complicated as GAE.  So the only reasonable option is 
 to get that feedback loop shorter.  How can that happen?  Some ideas: 

  * Google could announce when they are rolling out changes.  I don't 
 need release notes (although it would be nice to know what to watch 
 for) but I'd like to know when I should pay extra attention.  Or not 
 schedule client demos.  Facebook does something like this, rolling out 
 platform changes on specific days of the week (which I long ago 
 stopped caring about). 

  * Google could make extra support channels available during this 
 time.  Hell, use twitter.  Think of us as your QA staff - if we see 
 something amiss, we'd like to let

[google-appengine] Re: Catching bounced emails

2012-08-15 Thread Per
Hi Blaine,

GAE cannot do this, but you can use external mailers (sendgrid, mailgun, 
etc) which detect bounced mails, and then you can either collect the list 
of bounces, or you can provide web hooks so the external service calls your 
application, letting you know about the bounces. 

It's really simple to integrate, and while it costs a little extra, you'll 
get really good service right now, and some features (like not resending to 
already bounced addresses) that you might never get on GAE. 

Cheers,
Per



On Tuesday, August 14, 2012 9:31:19 PM UTC+2, Blaine Garrett wrote:

 I'd like to be able to catch bounced emails and handle them on the server. 

 I have customers that send documents to users and need to be notified if 
 the email doesn't go through (i.e. incorrect email address, mailbox full, 
 etc).

 Looking at the below docs, it appears you can directly email an appspot 
 and handle it. However, can the address that bounces are sent to be 
 specified?

 https://developers.google.com/appengine/docs/python/mail/receivingmail
 http://code.google.com/p/googleappengine/issues/detail?id=1800#c22

 Blaine


-- 
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/-/aXOtNF6JVI8J.
To post to this group, send email to google-appengine@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.



[google-appengine] Our application is suffering from 4 different kinds of 500 errors, plus memory spikes. Are we the 1.7.1 guinea pig?

2012-08-14 Thread Per
Hi,

Our application all of a sudden throws errors that I've not seen before. 
While we continuously deploy new minor features, we've not made any 
substantial changes that would explain either of these:

*  Datastore access misbehaving: 

Nested in javax.servlet.ServletException: 
com.google.apphosting.api.ApiProxy$ArgumentException: An error occurred parsing 
(locally or remotely) the arguments to DATASTORE_V3.Get().:
com.google.apphosting.api.ApiProxy$ArgumentException: An error occurred parsing 
(locally or remotely) the arguments to DATASTORE_V3.Get().
at 
com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:452)
at 
com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:382)
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:782)


* Got out of Memory errors while saving the session (outside our control)

java.lang.OutOfMemoryError
at java.util.zip.Deflater.init(Native Method)
at java.util.zip.Deflater.init(Deflater.java:177)
at java.util.zip.GZIPOutputStream.init(GZIPOutputStream.java:63)
at java.util.zip.GZIPOutputStream.init(GZIPOutputStream.java:75)
at 
com.google.apphosting.runtime.HttpCompression.compress(HttpCompression.java:51)
at 
com.google.apphosting.runtime.HttpCompression.attemptCompression(HttpCompression.java:205)
at 
com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:482)
at 
com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at 
com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at 
com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at 
com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)

* com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: 
Error setting single item (_ahsahRx7dGRBNmJh6XPmzlfTg) -- This one is 
thrown so deep inside the bowels of Jetty that it's outside our 
application's reach, and thus a memcache error takes down our application 
once again:  http://code.google.com/p/googleappengine/issues/detail?id=6463


* URL fetch throws errors we've not seen before: 
Caused by: com.google.apphosting.api.ApiProxy$ArgumentException: An error 
occurred parsing (locally or remotely) the arguments to URLFETCH.Fetch().


Also, memory is all of a sudden rising a lot, every now and then. Resetting 
the instance with the most instances helps for a while, but the problems 
resume a few hours later. I'd be tempted to think that the memory issues 
can cause some of the above errors (but not all). 

It's been a while since 1.7.0, so I wouldn't be surprised of this is  
related to internal 1.7.1 testing. If this is the case, please stop and 
move us back to a regular 1.7.0 environment. 

Cheers,
Per


PS: I've raised production issues, but since I have never heard back from a 
single one *ever*, I'm posting to this forum to state how unhappy I am.  It 
seems to be the only way to get attention (yeah, I've tried getting premium 
support, but it's not available in Germany...) 

-- 
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/-/2mhoZ1NyFa8J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Frameworks on GAE

2012-07-23 Thread Per


I doubt that Google will commit to any official statement. So here's my 2 
cents, from a low-usage, rather complex B2B application. Frameworks are 
okay, to a certain degree, but be prepared to rework if you're successful 

We're using one heavy framework (Apache Wicket) and plenty of the regular 
libs and frameworks like JodaTime, Objectify, OpenID, LessCss (which 
depends on Rhino), Bouncy Castle etc. It's not a super-heavy app, but it's 
not trivial anymore either. We had to make certain modifications to make 
things work fine on GAE, conduct some profiling, etc, but mostly we're just 
writing business logic. I guess we would have had to spend some time on any 
platform we chose, no matter if on AWS, or Heroku, or anything else.

Most of the issues we encountered were quite obvious right from the start. 
(Most notably, Wicket is really not that suited for GAE, but it made 
feature-development super-fast, so we kept it.)  Some other issues only 
started appearing after switching to the HR datastore, but since that's the 
default these days, you'll probably encounter those issues right away as 
well. So I'd recommend you write a prototype, cram in as much of the 
technology you want to, and keep it running for a couple of days or weeks. 
Make sure you're mostly happy with performance and startup time.  

There are times when GAE behaves oddly and is 2-3 times slower than normal. 
Memcaches is usually super-reliable, until it some day isn't. So, you need 
to expect the unexpected, and optimise your requests so they are always 
reasonably fast. We aim for 500ms or less, so on a bad day if a request 
takes 2 or even 4 seconds, our clients may be unhappy, but not rioting. A 
request that's typically taking 2 seconds is too slow though (IMO). If your 
prototype has that kind of performance, rethink it.

If you're happy with the prototype and want to move forward,  I'd suggest 
also spending some time ensuring your service and database layers have 
clean interfaces. I never had to move away from GAE yet, but the recent 
Memcache issues had me very worried and looking for alternatives.  Email, 
Cron, Memcache, Deploy-scripts, etc are great, but these are the things you 
can probably rework in a couple of weeks, even later on, especially since 
you can split the work between your team to a certain extent. But if the 
entire application (and not just a db-layer) was strongly dependent on GAE 
specifics, you might find it hard to port it over. 

There are times when things change, and then I'm happy we don't have sudden 
load spikes, but that  thanks to a sales process that takes weeks, we know 
what's coming. If we see a certain part of the application is slower than 
it should be, we spend a couple of days improving it. That's something that 
simply doesn't work in Consumer apps. If you're getting featured, and it's 
your once-in-a-lifetime, then you probably have to heed Brandon's wise 
words and optimise (very) early, and not rely on frameworks,

But if it's a normal B2B application, I think you can use a framework or 
two. Just make sure you test it with a prototype, yadda yadda etc. If 
you're super-successful, you'll hopefully make enough money in B2B-land, so 
you can afford paying someone to drop a framework that helped you kickstart 
your project faster. That's my strategy at least :)

Cheers
Per



On Sunday, July 22, 2012 11:32:41 AM UTC+2, glimmung wrote:

 Hi All,

 I've been reading, initially with amusement but more recently with 
 concern, the dialogue (for want of a better word) between Brandom Wirtz 
 and Jeff Schnitzer re. startup time/optimisation. Brandom has now made 
 the following very strong statement: NO FRAMEWORKS. NONE. Deal with it.

 This leads me to ask the Google team for their position on this: Is it 
 your position that GAE is an unsuitable platform for framework-driven apps?

 I'm using a framework, and trust the framework's authors to optimise their 
 part of the piece as much as possible, but I'm paid to solve business 
 problems, and am not about to dive into that timesink of esoterica. It's 
 outside my skill-set, and properly so in my view. I've only really tinkered 
 with GAE so far, and this is putting me off investing more time in what is 
 starting to look like a risky platform for me.

 So Google peeps, if I want to write B2B apps using a framework, am I your 
 market or not? 

 Or is it your position that the low-level optimisation to balance start-up 
 time and hosting cost will always be required?


 --

 Cheers,

 PhilK



-- 
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/-/OX-pCOHb8qYJ.
To post to this group, send email to google-appengine@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] Re: Task Guarantee?

2012-07-11 Thread Per

If you need to be super-certain, then you will always want to have a status 
flag that tells you if you have already processed some entity or not. It's 
also useful for cases where you cannot use transactions (a task might die 
in the middle as well of course)

Well, at least that's how we do it :) Whenever something is important, we 
want to track some kind of status anyhow. One of these statuses would be 
STATUS_UNPROCESSED or so. 

Cheers,
Per



On Wednesday, July 11, 2012 1:55:37 PM UTC+2, Richard Arrano wrote:

 Hello, 
 I have been designing my app with the notion in mind that even named 
 tasks may execute more than once, but I only recently came to realize 
 that a task may not execute at all. I have a task that operates on a 
 subset of my entities and it's absolutely imperative that all members 
 of this subset get processed and saved. I originally thought named 
 tasks would help accomplish this, but this does not seem to be the 
 case. Is there any way to guarantee that I process these entities? I 
 also considered a cron job that checks every couple of minutes to 
 check for unprocessed entities(since a cron job will kick off the 
 initial task) but I was hoping for a slightly more elegant solution. 

 Thanks, 
 Richard

-- 
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/-/UNIfi6NldFYJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Memcache errors break the GAE-internal session handling. Our application is almost unusable now. Help, please?

2012-07-10 Thread Per

Memcache errors are frequently breaking the sessions-persistence, as there 
doesn't seem to be any try-catch in the GAE session handling. This results 
in tons of 500 errors for our end users.  This seems like fundamental flaw 
in the framework to me.


Uncaught exception from servlet
com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: Error 
setting single item (_ahsvuHmc0fDcNMbpwqBsbrJ4Q)
at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:426)
at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:418)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.convertResponse(MemcacheServiceApiHelper.java:60)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:112)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:105)
at 
com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:57)
at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:98)
at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:90)
at 
com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:28)
at 
com.google.appengine.api.memcache.MemcacheServiceImpl.put(MemcacheServiceImpl.java:81)
at 
com.google.apphosting.runtime.jetty.MemcacheSessionStore.saveSession(MemcacheSessionStore.java:39)
at 
com.google.apphosting.runtime.jetty.SessionManager$AppEngineSession.save(SessionManager.java:164)
at 
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:41)
at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at 
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at 
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249)
at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at 
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at 
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135)
at 
com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:477)
at 
com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at 
com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at 
com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at 
com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)


No matter what causes the Memcache error, the exception should get caught by 
the framework. Or there should be a way to catch it from the application side. 
I've tried unsuccessfully to apply the LogAndContinue-Errorhandler. 
Is there some way to disable memcache for session-handling maybe? Or is it 
possible to copy select GAE source code into your own application, applying 
your own error-handler some way? I'd do anything to make our application work 
again.


I've raised a Production Issue, I've reported this in the forum. And other 
suggestions? I'd go premium if I had some kind of reassurance that it 
wouldn't simply add insult to injury.


Application ID is small-improvements.

Kind regards,
Per


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web

Re: [google-appengine] Need help or consulting: Request was aborted errors

2012-07-09 Thread Per

It's obviously very hard to diagnose this remotely. But if it's spending 8 
out of 15 seconds waiting, then what about the other 7 seconds, where 
exactly are they lost? There's no point arguing that this should work (of 
course it should), IMO you need to start analysing. Maybe you did already, 
but it's not obvious from your posts what you did already, and what you 
didn't. In another thread you mentioned you didn't use appstats for a long 
time - I'd do that first thing. Also, I'd add very detailed manual logging, 
so you know what bits run fast, and which ones don't. 

I've encountered plenty of GAE glitches in the past, but also quite a few 
things were our own fault. I'm not sure how performance analysis works on 
Python, but in Java it would be time to bring on the good old Profiler. I'd 
make sure that on localhost a request really just takes a few miliseconds, 
even under load, and then take it live, to a loadtesting environment and 
see what happens there under growing load. Given the numbers you posted, 
I'd not be surprised if some lockingsynchronizing is part of the problem, 
but that's just a guess. Find out what operation really takes the most 
time, or at what load things start going wrong. 


On Monday, July 9, 2012 4:26:01 AM UTC+2, Richard wrote:

 Yep, I know about that.  The internal limit is 1000msec, but you should 
 aim for 750msec just to 'be safe'.

 Here are my timings:

 ms=15376 cpu_ms=37 api_cpu_ms=17 cpm_usd=0.003428 pending_ms=8265

 37 msec of CPU  after waiting 8.2 seconds to execute.

 Some math:
  - 500 incoming requests
  - 40 servers
  = ~ 15 requests/server
  ... but each request takes ~55 msec of CPU + API  

 That's 825 msec for THE WHOLE LOT !   So why on earth is there 8 second 
 of waiting before that request was serviced ?


 -R

 On Sunday, July 8, 2012 10:13:28 PM UTC-4, Per wrote:


 Not sure where I saw it, but I believe an application must respond within 
 a second at most *on average*, or GAE reserves the right to throttle it. 
 So, if you have some kind of slowdown inside your app, then requests start 
 piling up. I'm not a Python developer, but if you had the equivalent of a 
 synchronised map in there, with lots of concurrent access, then you might 
 end up in a situation like this. Not sure about what's really to blame of 
 course, but I'd strongly recommend setting up a controlled loadtesting 
 environment (just copy the app, and start firing requests at it).  Add 
 plenty of logging to your app, enable appstats, and then slowly increase 
 the load. Maybe even strip the application down, starting only with read 
 access. I'm sure you will find something, and I would love to hear what it 
 was! I wish you luck!





 On Monday, July 9, 2012 3:19:04 AM UTC+2, Richard wrote:

 I could if memcache actually worked.  But it does not.  I originally 
 tried to use it and found that I could not push the game state to memcache 
 and then have the other instances pull it.  They would get versions of it 
 that were up to 5 minutes old.  My timings are 5 second windows.
 5 secs to submit all scores
 5 secs to reap scores and calc leaderboards
 5 secs to fan out results to clients

 Experience shows that memcache is just broken for that sort of timing.

 As for using Go instead of Python.  I am not sure I follow why Go should 
 be better.  The lag is not coming from CPU or queries.

 Right now I am running 50 instances to serve 500 game clients. $48 for 
 the last 18 hours.  11% of my requests result in Request was aborted.  
 Yeah, that is 12 THOUSAND fails.

 Back in the year 1995, ftp.cdrom.com could serve 2000 clients 
 simultaneously on a Pentium Pro 200MHz  and I cannot serve 20 clients 
 on a 500Mhz virtual box ?  

 I still contend there is some internal throttling going on somewhere.

 -R



 On Sunday, July 8, 2012 6:23:02 PM UTC-4, Kyle Finley wrote:

 Richard,

 Another option would be to move the Game State request to a 
 Gohttps://developers.google.com/appengine/docs/go/overview instance, 
 either as a 
 backendhttps://developers.google.com/appengine/docs/go/config/backendsor 
 as a separate version. I believe a single Go instance should be able the 
 handle 500 request / second. You could then share the Game State between 
 the Python version and the Go version through Memcache, cacheing to 
 instance memory every 5 sec. 

 - Kyle 



-- 
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/-/_V2FQCZb_sQJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Memcache errors break session-saving. Should fail silently IMO. Any workaround?

2012-07-09 Thread Per
Hi Joakim,

replacing the session with a cookie is unfortunately not an option for us, 
our web framework stores a lot of stuff in the session.

I don't even want to use memcache at all, the session ends up in the 
datastore anyway, so if I had a choice, I would disable memcache here. It's 
just built that way in GAE.  I'd do anything to stop our users from  
getting 500-errors, and I'd like a way to ignore memcache errors here. 

I read that the sessions get stored into memcache namespace _ahs, so I 
tried to register a LogAndContinue-Errorhandler for that namespace, but 
unfortunately that doesn't work either, at least not this way:


MemcacheServiceFactory.getMemcacheService(_ahs).setErrorHandler(new 
LogAndContinueErrorHandler(Level.INFO) {
@Override
public void handleDeserializationError(InvalidValueException 
thrown) {
log.error(gotcha!,thrown);
super.handleDeserializationError(thrown);
}

@Override
public void handleServiceError(MemcacheServiceException thrown) 
{
log.error(gotcha!,thrown);
super.handleServiceError(thrown);
}
});


Any idea how else to register a handler to prevent this from killing our 
requests?

Cheers,
Per





On Friday, July 6, 2012 7:24:26 PM UTC+2, Joakim wrote:

 If silent failure on write is to be acceptable, we need a way to make sure 
 following requests do not read session from memcache, as it could return an 
 old value. I am unaware of any way to accomplish this reliably without 
 hitting the datastore, at which point you might as well not have the 
 session in memcache at all.

 One possible alternative is to replace the entire session with storing 
 encrypted data in a cookie, though this only works for smaller amounts of 
 data as the maximum size for an entire cookie is generally said to be 4095 
 bytes.

 Just my 2 cents.
 Joakim

 On Wednesday, July 4, 2012 11:38:34 PM UTC+2, Per wrote:


 When using sessions, these are (also) stored in memcache  by GAE. 
 Unfortunately, it seems like any memcache hiccup can crash the process, 
 turning an otherwise fine page into a 500 page on the way out.

 To me that looks like a design flaw. After all, Memcache is optional, and 
 its expected to be unavailable or breaking every now and then. As of 1.6 
 you can even provide a policy to silently ignore memcache errors inside 
 your application. We're using 
 setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.SEVERE)) 
 with Objectify just fine, but it doesn't seem to have any effect on the 
 Session-Save process. This seems to be entirely outside our control. 

 These errors are really annoying some of our clients. Is there maybe some 
 kind of other error handler I'm missing?

 Here's the stracktrace for reference:


 com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: 
 Error setting single item (_ahsOH7nik8bCRTbIXblKurKQQ)
  at 
 com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:426)
  at 
 com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:418)
  at 
 com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.convertResponse(MemcacheServiceApiHelper.java:60)
  at 
 com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:112)
  at 
 com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:105)
  at 
 com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:57)
  at 
 com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:98)
  at 
 com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:90)
  at 
 com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:28)
  at 
 com.google.appengine.api.memcache.MemcacheServiceImpl.put(MemcacheServiceImpl.java:81)
  at 
 com.google.apphosting.runtime.jetty.MemcacheSessionStore.saveSession(MemcacheSessionStore.java:39)
  at 
 com.google.apphosting.runtime.jetty.SessionManager$AppEngineSession.save(SessionManager.java:164)
  at 
 com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:41)
  at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
  at 
 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
  at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
  at 
 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
  at 
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
  at 
 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
  at 
 org.mortbay.jetty.handler.ContextHandler.handle

[google-appengine] Re: managing bulk emails from app engine app

2012-07-08 Thread Per
Hi Vik,

technical details aside, keep in mind that the spam filter settings on App 
Engine can be pretty strict. We have been sending mails for 18 months now, 
increasing the number gradually, and we also used DKIM signing. Still, 
suddenly some time last week our mails stopped getting sent. From all I can 
tell some Google mechanism decided that we're a spammer. We have inquired 
with Google instantly, but of course the GAE customer service is poor as 
always and never got back to us. So we switched to an external email 
provider now (mailgun, but there are dozens out there), and I'm quite happy 
with that, since tracking of emails is a lot more convenient too. It's not 
free though. 

Long story short, if you all of a sudden send 10k mails, be prepared to get 
filtered by Google because they think you're a spammer. Make sure to spread 
the load, and track what you have sent already, so you know what you'd need 
to resend if push comes to shove.

Cheers,
Per


On Saturday, July 7, 2012 7:19:12 PM UTC+2, Vivek Kumar wrote:

 Hello

 We have around 1 registered users with us who are blood donors. We 
 want to send them periodic emails like every month to remind them or their 
 account status etc. 
 Obviously, a single request cannot process so many emails. 

 So, what is the suggested way to handle this use case without hitting 
 request time limits etc on app engine?

 our app is in GAE for java

 Vik


-- 
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/-/CZHqGIOGAAUJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Need help or consulting: Request was aborted errors

2012-07-08 Thread Per

Sounds odd. I'd also suggest trying F4 (just for the fun of it, even if the 
chance is low that you'll find something, it won't hurt to try it for a few 
hours). 

Did you check out appstats yet? 

Also, in my experience the whole fiddling-with-sliders was never 
productive, I'd suggest resetting to automatic/automatic values, it just 
seemed more reliable to me. 

You didn't mention if you had checked the quota details screen, there are a 
couple of per-minute quotas that seem to bite people out of the blue.  I 
once had a backup-job that was stuck and cost me lots and lots of money, it 
was running in the background on the built-in version, maybe something like 
this can also contribute to throttling the core application? 

Well, admittedly we're all poking in the dark here, maybe you can detail 
what else you have tried and where you've looked already?

All the best
Per


On Sunday, July 8, 2012 10:14:05 PM UTC+2, Richard 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/-/nsTNa0Ub8PEJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Need help or consulting: Request was aborted errors

2012-07-08 Thread Per

Not sure where I saw it, but I believe an application must respond within a 
second at most *on average*, or GAE reserves the right to throttle it. So, 
if you have some kind of slowdown inside your app, then requests start 
piling up. I'm not a Python developer, but if you had the equivalent of a 
synchronised map in there, with lots of concurrent access, then you might 
end up in a situation like this. Not sure about what's really to blame of 
course, but I'd strongly recommend setting up a controlled loadtesting 
environment (just copy the app, and start firing requests at it).  Add 
plenty of logging to your app, enable appstats, and then slowly increase 
the load. Maybe even strip the application down, starting only with read 
access. I'm sure you will find something, and I would love to hear what it 
was! I wish you luck!





On Monday, July 9, 2012 3:19:04 AM UTC+2, Richard wrote:

 I could if memcache actually worked.  But it does not.  I originally tried 
 to use it and found that I could not push the game state to memcache and 
 then have the other instances pull it.  They would get versions of it that 
 were up to 5 minutes old.  My timings are 5 second windows.
 5 secs to submit all scores
 5 secs to reap scores and calc leaderboards
 5 secs to fan out results to clients

 Experience shows that memcache is just broken for that sort of timing.

 As for using Go instead of Python.  I am not sure I follow why Go should 
 be better.  The lag is not coming from CPU or queries.

 Right now I am running 50 instances to serve 500 game clients. $48 for the 
 last 18 hours.  11% of my requests result in Request was aborted.  Yeah, 
 that is 12 THOUSAND fails.

 Back in the year 1995, ftp.cdrom.com could serve 2000 clients 
 simultaneously on a Pentium Pro 200MHz  and I cannot serve 20 clients 
 on a 500Mhz virtual box ?  

 I still contend there is some internal throttling going on somewhere.

 -R



 On Sunday, July 8, 2012 6:23:02 PM UTC-4, Kyle Finley wrote:

 Richard,

 Another option would be to move the Game State request to a 
 Gohttps://developers.google.com/appengine/docs/go/overview instance, 
 either as a 
 backendhttps://developers.google.com/appengine/docs/go/config/backendsor 
 as a separate version. I believe a single Go instance should be able the 
 handle 500 request / second. You could then share the Game State between 
 the Python version and the Go version through Memcache, cacheing to 
 instance memory every 5 sec. 

 - Kyle 



-- 
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/-/iAnWI4OPNRsJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Memcache errors break session-saving. Should fail silently IMO. Any workaround?

2012-07-04 Thread Per

When using sessions, these are (also) stored in memcache  by GAE. 
Unfortunately, it seems like any memcache hiccup can crash the process, 
turning an otherwise fine page into a 500 page on the way out.

To me that looks like a design flaw. After all, Memcache is optional, and 
its expected to be unavailable or breaking every now and then. As of 1.6 
you can even provide a policy to silently ignore memcache errors inside 
your application. We're using 
setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.SEVERE)) 
with Objectify just fine, but it doesn't seem to have any effect on the 
Session-Save process. This seems to be entirely outside our control. 

These errors are really annoying some of our clients. Is there maybe some 
kind of other error handler I'm missing?

Here's the stracktrace for reference:


com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: Error 
setting single item (_ahsOH7nik8bCRTbIXblKurKQQ)
at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:426)
at 
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$7.transform(AsyncMemcacheServiceImpl.java:418)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.convertResponse(MemcacheServiceApiHelper.java:60)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:112)
at 
com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.wrap(MemcacheServiceApiHelper.java:105)
at 
com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:57)
at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:98)
at 
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:90)
at 
com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:28)
at 
com.google.appengine.api.memcache.MemcacheServiceImpl.put(MemcacheServiceImpl.java:81)
at 
com.google.apphosting.runtime.jetty.MemcacheSessionStore.saveSession(MemcacheSessionStore.java:39)
at 
com.google.apphosting.runtime.jetty.SessionManager$AppEngineSession.save(SessionManager.java:164)
at 
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:41)
at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at 
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at 
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249)
at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at 
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at 
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135)
at 
com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:477)
at 
com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at 
com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at 
com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at 
com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)


And here's the code I tried, but which didn't help:

MemcacheService service = 
MemcacheServiceFactory.getMemcacheService();
service.setErrorHandler(new 
LogAndContinueErrorHandler(Level.SEVERE));

Any help would be appreciated!

Kind regards,
Per

-- 
You received this message because you

[google-appengine] Re: Is strong symmetric encryption possible on GAE at all (using Java)? I've searched for hours now...

2012-07-01 Thread Per

Success! SDK 1.7 enables you to register your own JCE provider, so it now 
works with Bouncy Castle for instance. Just make sure to disable 
precompilation, since it breaks signed JARs.  

We're now encrypting our main content columns using AES-256, and this (in 
combination with SSL) makes me very happy!  Also, encryption is 
surprisingly fast, a lot faster than on my local MBP. There's really no 
excuse to not encrypt your data anymore.

Thanks for solving the underlying issue, despite there being relatively few 
votes.

Per



-- 
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/-/RaJSSoSUEWUJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Cannot purchase VIP SSL: Limit reached, contact SSL trusted testers support

2012-06-27 Thread Per



Hi,

I was so excited about the new SSL VIP, I wanted to purchase right away. 
Unfortunately, a strange error message stops me:


https://lh6.googleusercontent.com/-RCO4OkSVxMw/T-s8tNiGODI/ADk/H49MVBYGUjs/s1600/Google+Apps.jpg



I have no clue who the Trusted Testers support team is. When I last 
inquired (by email) to the address which signed me up to the TT, I didn't 
hear back. Well, I *never* hear back from Google when sending emails to 
you. So I'm putting this into the forum right away :)  Any idea?

Cheers,
Per

-- 
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/-/D_Xh-oQ_kD0J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: App Engine 1.7.0 Release is Out!

2012-06-26 Thread Per


AWESOME news! 

A big thank you to the entire App Engine team. This is the release I've 
been waiting for.  VIP at last! And at a very affordable price tag too.

Now, the only thing that's left would be proper support, e.g. replying on 
the forums, responding to emails, replying on SO. With all these 
improvements in place, you might even be able to spare a developer to 
rework the FAQs  :)

Cheers,
Per



On Wednesday, June 27, 2012 1:42:16 AM UTC+2, Takashi Matsuo (Google) wrote:


 Hi App Engine users,

 We've just released the release of the 1.7.0 SDK.

 Release notes for Java:
 http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes

 Release notes for Python:
 http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes

 Release notes for Go:
 http://code.google.com/p/googleappengine/wiki/SdkForGoReleaseNotes

 Enjoy!

 -- 
 Takashi Matsuo
  

-- 
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/-/Tu_-R_0NUsgJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Is strong symmetric encryption possible on GAE at all (using Java)? I've searched for hours now...

2012-06-25 Thread Per

Hi all,

I'm not a crypto-enthusiast, so maybe there is something that I'm missing. 
But the usual suspects like the Sun JCE unlimited strength policy files 
don't work for obvious reasons, and Bounce Castle does not either. I got 
Jasypt to work, using the StrongTextEncryptor, which is a wrapper for 
PBEWithMD5AndTripleDES, but I read that DES is not considered strong enough 
anymore, so I was hoping for AES with more than 128 bit (or something else 
that's considered good enough these days). 

I came across dozens of questions about this topic, but no answers 
unfortunately. Just fluffy assumptions, go figure it out suggestions, etc.

So I'm wondering, maybe it's simply not possible? Is it entirely dependent 
on the JCE unlimited strength files? (please star 
http://code.google.com/p/googleappengine/issues/detail?id=2889 in that 
case)  Or is there some other way to get strong symmetric encryption off 
the ground? 

Any help would be greatly appreciated! 
Per



-- 
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/-/-l-kGzq5nWIJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Is strong symmetric encryption possible on GAE at all (using Java)? I've searched for hours now...

2012-06-25 Thread Per
Oh wait! Maybe SDK 1.7 has the answer! Too late to try it now (2am) but 
I'll check tomorrow and update this question with my findings! That would 
be awesome news. Totally missed that announcement detail.






-- 
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/-/uXiLEKiPfUkJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: Java instance startup time out of control

2012-06-23 Thread Per
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 google-appengine@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.



[google-appengine] Re: 1.7.0 Prerelease Now Available

2012-06-18 Thread Per

Hi Marzia,
 

 - The Java Datastore API now supports Or queries.


This sounds interesting. Do you have some preliminary documentation for 
this feature? 

Kind regards,
Per

-- 
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/-/9nLLBK6wqpQJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: Java instance startup time out of control

2012-06-18 Thread Per
Hi Jeff,

just as a comparison, we have 33 classes that get initialised with 
Objectify, and it takes merely 2 seconds. We had all the problems you 
mentioned prior to jaring things up, and since then performance has been 
improved vastly. I thought Google had improved the problem (they made some 
comment about this 9 months ago or so, when we posted our summary at 
http://www.small-improvements.com/app-engine-performance-tuning) but maybe 
they haven't. 

We're also using Apache Wicket, and while initialising the mounted paths, 
we're actually referring to hundreds of additional Java files, which again 
refer to some 2 to 5 inner classes each. This was *killing* us before some 
nice fellow suggested jarring the classes, and now even that merely takes 4 
seconds during startups. 

Maybe it also helps a little that we're on F4 these days, but all the 
performance tuning we did back then was on F1. I'm guessing you're on F4 
anway, if you're this desperate.

BTW, I had also considered stripping unused classes from the jars, but it 
was really the class *loading*, not the parsing of Jar files, that was 
causing the slowdown. I'm guessing it had to do with file access 
ultimately, and that each file access on the VM needs to be verified by the 
secure Classloader, and that this is simply tons more efficient if you're 
just looking at the same jar file all the time.

So, add that target to your ant file, and let us know how you go! :)

 target name=createjar depends=copycerts description=Creates a jar 
from the classes folder
jar jarfile=${libs}/small-improvements.jar basedir=${classes}/
delete dir=${classes}/
/target



Cheers,
Per

-- 
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/-/LkQhIAFwLWoJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Java instance startup time out of control

2012-06-17 Thread Per
Hi Jeff, sounds awful.

Even 20s on a good day is a lot IMO. We're using Wicket, which is on the 
heavy side, and still the startup typically only takes 10 to 15s, and 
that's including rendering an initial page too (so it basically involves 
firing up all subsystems too, loading all classes, contacting the database 
several times, filling some caches, etc). 

I'm guessing you're experiencing some new release testing by the Google 
Team, so that might account for a certain slowdown. We've seen our average 
latency increase from 250ms to 380ms over night, 2 days ago.  Maybe your 
slowdown is related to a similar service change.

But it sounds like your application startup is too slow to begin with. Do 
you have logging in there which can pinpoint what parts take how much time? 
Would be interested to learn about that.

Cheers,
Per



On Saturday, June 16, 2012 11:56:33 PM UTC+2, Jeff Schnitzer wrote:

 We're having a big problem with instance startup time.  It varies 
 between 20s and 60+ seconds, and lately it's tending towards the high 
 end.  We're starting to experience downtime because instances get 
 deadlined before they go active. 

 This app is well optimized for GAE.  There's no classpath scanning and 
 it doesn't try to eagerly load data.  On a good day it starts in 
 20s... so at this point there's not really much I can do. 

 I have a cron task that performs a db cleanup once a minute, and since 
 crons can run over 60s I can eventually get one instance started, 
 which is enough to serve traffic at the moment.  But at this point I 
 can no longer deploy code over old versions because the appserver 
 restart will fail. 

 Please help. 

 Jeff 


-- 
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/-/CzSFxHEhj3QJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Memcache problem on a production application

2012-05-17 Thread Per
Hi Mathieu,

not sure if you're aware of this (it took me a while as well) but you need 
to design your application so it doesn't flinch even when memcache is 
unavailable. Try-catch everything. We had an issue at the same time as you 
as well, and it turned out that in one part of the application we had also 
forgotten to try-catch memcache errors. Just keep improving until it's 100% 
robust. Because memcache just isn't. A large scale downtime would probably 
show up on the system status page, but local issues won't.

Cheers,
Per



On Wednesday, May 16, 2012 7:14:49 PM UTC+2, Mathieu Clavel wrote:

 Memcache is now working as expected.
 Problem was from 16h to 18h (UTC+2)

 Mathieu

 Le mercredi 16 mai 2012 17:49:45 UTC+2, Mathieu Clavel a écrit :

 Hello,

 My production application is currently having memcache problem.
 Nothing is visible in the global appengine system status : 
 https://code.google.com/status/appengine/

 Error is :

 Caused by: com.google.appengine.api.memcache.MemcacheServiceException: 
 Memcache put: Error setting single item (...)


 Nothing is working : Jasper also has error :

 org.apache.jasper.runtime.JspFactoryImpl internalGetPageContext: Exception 
 initializing page context
 com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: 
 Error setting single item (_ahsXuelLhc5ClPxy8Dra2vPUQ)


 My application name is oav-agz.


 Regards,


 Mathieu



-- 
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/-/eG0cP9poQPgJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Calculation of frontend hours seems off by almost factor 2.

2012-05-15 Thread Per
Hi Gregory,

if I'm doing something wrong here then I'd love to learn how you do it. I 
tried setting the max idle instances to 1 (didn't help, except increase 
latency), I set the pending queue to 1s and 2s and 3s (didn't help, but 
increased the latency). If there is a way to limit the instances reliably, 
I would love to hear how you do it. 

We have maybe 0.5 to 1 requests per second on average (the QPS up there in 
the screenshot is only a snapshot for the past minute). Our average 
response time is around 300ms. Occasionally more, occasionally less. It's 
not great, but it's still a lot lower than the 1s limit for continuous 
usage.  We do use the memcache where we can, but it's limited to some 10MB 
to 30MB for us at the moment, and the hit ratio is always around 65%, so we 
do have to access the datastore more than we want to. We're also 
denormalising plenty of data for faster access, but it would substantially 
slow us down if we had to denormalise *everything* that is displayed on a 
page. I don't think it should be a problem to do 2 to 3 queries in a single 
request, maybe 5 datastore gets plus a few memcache gets, should it? Given 
that we're developing a complex application (www.small-improvements.com) 
and not just a number crunching app, this seems not too bad. And 
performance-wise we're happy, it's just the cost that's prohibitive.


Anyway, I would love to hear how you do it, and maybe a screenshot of your 
system (and the ratio of requests to instances) would be interesting.

Cheers,
Per



On Tuesday, May 15, 2012 11:01:26 AM UTC+2, Gregory Nicholas wrote:

 Not directly answering the question, I'm posing another, why the eff are 
 you running instances in such a manner for such little qps

 Also, I can also suggest that at that low of qps, you could stand to 
 substantially optimize the work you're doing reading data from the data 
 store, which will also help minimize the frontend instance workload


-- 
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/-/ht06S7VVAkkJ.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Scheduler/billing changes in 1.6.5? My daily cost went from $5 to $35.

2012-05-15 Thread Per
Oh my Goodness! You're right. I never noticed the new built-in version. 
Plus I never realised there were failed backup-tasks that were retrying all 
over again (for 20 days! 500 retries!) to do a backup. This meant two 
instances were permanently doing stuff. Also this explains the unusually 
high number of datastore operations.

Stupid me! But stupid GAE user interface too. How about adding a few words 
to the backup initiated confirmation dialog?  Like these tasks will run 
in a built-in version, so you can track progress and billing over there? 
Something along the lines. There's plenty of whitespace on that screen.

Anyway, thanks Takashi for pointing me in the right direction! 

Per


On Tuesday, May 15, 2012 5:33:47 PM UTC+2, Takashi Matsuo (Google) wrote:


 Hi Per,

 Thanks for sending the details. First thing comes to mind is that the 
 culprit might be instances on a version 'ah-builtin-python-bundle'.
 This version is currently dedicated to the 'Datastore Admin' feature. I 
 think you are running some task like backup/copy/deletion in 'Datastore 
 Admin', right?

 I hope it could explain the situation you are experiencing right 
 now. Please let me know if that isn't the case.

 Thanks,

 -- Takashi

 On Tue, May 15, 2012 at 7:06 AM, Per per.fragem...@gmail.com wrote:

 https://lh3.googleusercontent.com/-qa-cjA-cUbM/T7GBSShwGrI/ADY/OYljQYgcczc/s1600/changed-2-weeks-ago.jpg


 Hi Takashi,

 I waited with my response because I didn't want to jump to conclusions. 
 Yes, I have been experimenting with some settings every now and then, 
 limiting instances, playing with the pending sliders etc. But all it did 
 was change how quickly instances were created or collected (while always 
 increasing latency). It didn't change how the billed instances were 
 calculated.


 Above is the chart of my applications' instances for the past month. (The 
 editor didn't allow me to place it at the right location...) It's rather 
 easy to spot when things changed. We used to get billed for roughly one 
 instance on average. Yes, we did have more than one running, but it was 
 (and is!) always one instances that handles 95% to 99% of the load. So it 
 seemed only just that Google would only charge for the main instances. I 
 never asked for an instance that just sits there, but I didn't mind it 
 while it was free :)


 So now being charged for two or three instances, when only one is really 
 doing anything, seems like a major change that should be documented. Okay, 
 maybe it's just our application, but our pricing has increased steeply. I 
 just posted another message about the frontend hour calculation. Both 
 issues combined seem to have led to a pricing increase from $5 to $10 
 before, to now $30 to $50. Our request per second have increased 
 moderately, we may have made some requests slower, we might have slightly 
 different usage patterns. But I cannot see a reason for a price increase 
 this steep.

 Any help or insight would be appreciated. Our app ID is 
 small-improvements-hrd

 Kind regards,
 Per




 On Friday, April 27, 2012 7:02:26 AM UTC+2, Takashi Matsuo (Google) wrote:

 On Fri, Apr 27, 2012 at 10:16 AM, Per per.fragem...@gmail.com wrote: 
  Hi team, 
  
  previously, the scheduler used to spin up 3 instances for our 
  application, only used 1 out of the 3, but at least we didn't have to 
  pay for the unused instances. There was always a big gap between total 
  instances and billed instances. 

 Wasn't it because that you set Max Idle Instances at that time? 
 If you set Max Idle Instances to Automatic, the total instances and 
 billed instances should be the same. 

  
  However, as of yesterday, the scheduler continues to spin up 3 
  instances on average, but we have to pay for all of them. We're at 
  maybe 1 request per second on average, and it's all handled just fine 
  by one instance. We're on F4, so having to pay for 2 mostly unused 
  instances hurts. 
  
  
  Since this seems to coincide with the 1.6.5 release, I'm tempted to 
  think that there's something changed in the background, and it would 
  be great to learn more about the new suggested way. 
  
  When we tried to limit idle instances last time, all we got was 
  instance churn and bad latency. So we're on automatic/automatic these 
  days, and I'd prefer not to have to experiment again. Some advice 
  would be great. 

 Again, I'm wondering when you tried to limit the idle instances. 
 Generally speaking, you can not get everything. If you want a better 
 performance, you'll need to pay more, and vice versa. 

 However, if you're really certain that the behavior of our scheduler 
 has significantly changed, please let me know your app-id and detailed 
 explanation(it can be off-list), so I can look into it further. 

  
  That aside 1.6.5 is great of course! :) 

 Thanks! 

 -- Takashi 

  
  Cheers, 
  Per 
  
  -- 
  You received this message because you are subscribed to the Google 
 Groups Google App

[google-appengine] Calculation of frontend hours seems off by almost factor 2.

2012-05-14 Thread Per


Hi Google team,

according to my understanding the F4 instances incur 4 instance hours per 
actual hour. Assuming an average of 2 instances over the past 14 hours, we 
should be at 2*14*4 = 112 instance hours, not at 205.  I understand that 
this data may not be exact, so maybe we should be at 125 or even 140 or so. 
Or am I mistaken?


https://lh6.googleusercontent.com/-7D0y1QsVR2g/T7F9XDMQbCI/ADM/lX6_EjfvimU/s1600/instances2.jpg




This has been going on for about 2 weeks now, and our bills are getting 
very high, given that we rarely exceeds 0.8 requests per second.

I raised two production issues (on Thursday and Friday) but I haven't  
received  confirmation even wether the issues have been created, so I'm 
trying the forum.

We used to be at $5 to $10per day, now we're at $30 to $50. Some of it 
might be due to increased usage, but we certainly didn't quadruple load. It 
would be great to get some insight into this.

Our app ID is small-improvements-hrd

Cheers,
Per

-- 
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/-/57lww16rkA0J.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Scheduler/billing changes in 1.6.5? My daily cost went from $5 to $35.

2012-05-14 Thread Per


https://lh3.googleusercontent.com/-qa-cjA-cUbM/T7GBSShwGrI/ADY/OYljQYgcczc/s1600/changed-2-weeks-ago.jpg


Hi Takashi,

I waited with my response because I didn't want to jump to conclusions. 
Yes, I have been experimenting with some settings every now and then, 
limiting instances, playing with the pending sliders etc. But all it did 
was change how quickly instances were created or collected (while always 
increasing latency). It didn't change how the billed instances were 
calculated.


Above is the chart of my applications' instances for the past month. (The 
editor didn't allow me to place it at the right location...) It's rather 
easy to spot when things changed. We used to get billed for roughly one 
instance on average. Yes, we did have more than one running, but it was 
(and is!) always one instances that handles 95% to 99% of the load. So it 
seemed only just that Google would only charge for the main instances. I 
never asked for an instance that just sits there, but I didn't mind it 
while it was free :)


So now being charged for two or three instances, when only one is really 
doing anything, seems like a major change that should be documented. Okay, 
maybe it's just our application, but our pricing has increased steeply. I 
just posted another message about the frontend hour calculation. Both 
issues combined seem to have led to a pricing increase from $5 to $10 
before, to now $30 to $50. Our request per second have increased 
moderately, we may have made some requests slower, we might have slightly 
different usage patterns. But I cannot see a reason for a price increase 
this steep.

Any help or insight would be appreciated. Our app ID is 
small-improvements-hrd

Kind regards,
Per



On Friday, April 27, 2012 7:02:26 AM UTC+2, Takashi Matsuo (Google) wrote:

 On Fri, Apr 27, 2012 at 10:16 AM, Per per.fragem...@gmail.com wrote: 
  Hi team, 
  
  previously, the scheduler used to spin up 3 instances for our 
  application, only used 1 out of the 3, but at least we didn't have to 
  pay for the unused instances. There was always a big gap between total 
  instances and billed instances. 

 Wasn't it because that you set Max Idle Instances at that time? 
 If you set Max Idle Instances to Automatic, the total instances and 
 billed instances should be the same. 

  
  However, as of yesterday, the scheduler continues to spin up 3 
  instances on average, but we have to pay for all of them. We're at 
  maybe 1 request per second on average, and it's all handled just fine 
  by one instance. We're on F4, so having to pay for 2 mostly unused 
  instances hurts. 
  
  
  Since this seems to coincide with the 1.6.5 release, I'm tempted to 
  think that there's something changed in the background, and it would 
  be great to learn more about the new suggested way. 
  
  When we tried to limit idle instances last time, all we got was 
  instance churn and bad latency. So we're on automatic/automatic these 
  days, and I'd prefer not to have to experiment again. Some advice 
  would be great. 

 Again, I'm wondering when you tried to limit the idle instances. 
 Generally speaking, you can not get everything. If you want a better 
 performance, you'll need to pay more, and vice versa. 

 However, if you're really certain that the behavior of our scheduler 
 has significantly changed, please let me know your app-id and detailed 
 explanation(it can be off-list), so I can look into it further. 

  
  That aside 1.6.5 is great of course! :) 

 Thanks! 

 -- Takashi 

  
  Cheers, 
  Per 
  
  -- 
  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-appengine@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. 
  



 -- 
 Takashi Matsuo | Developer Advocate | tmat...@google.com 


-- 
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/-/7AtnmRTCRToJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Should my memcache stats worry me? Oldest item 10-20 minutes, 10mb size, 65% hit rate. Seems low..?

2012-05-08 Thread Per

Hi all,

I never really paid attention to the memcache stats, but after my app felt 
slow the past couple of days I started checking the stats more regularly. 
It's been between 5mb and 15mb the last three days, there are between 200 
and 1000 items in it, and the oldest item was between 5 minutes and 20 
minutes old. The hit rate is between 60% and 70%. 

We typically have between 1 and 3 instances running, with maybe 0.5 
requests per second on average. Based on gut feeling I'd say it would be 
beneficial if the memcache wasn't evicted that quickly, we should see 
higher hit rates if items were allowed to stick around for an hour or so.  

I'm curious, what are everyone else's experiences? Or is there maybe even 
some suggested approach to increase this? I searched, but couldn't find 
anything relevant, only complaints about memcache failures :)

Cheers,
Per
(small-improvements-hrd)

-- 
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/-/Sfe1mOxZqWsJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Scheduler/billing changes in 1.6.5? My daily cost went from $5 to $35.

2012-04-26 Thread Per
Hi team,

previously, the scheduler used to spin up 3 instances for our
application, only used 1 out of the 3, but at least we didn't have to
pay for the unused instances. There was always a big gap between total
instances and billed instances.

However, as of yesterday, the scheduler continues to spin up 3
instances on average, but we have to pay for all of them. We're at
maybe 1 request per second on average, and it's all handled just fine
by one instance. We're on F4, so having to pay for 2 mostly unused
instances hurts.


Since this seems to coincide with the 1.6.5 release, I'm tempted to
think that there's something changed in the background, and it would
be great to learn more about the new suggested way.

When we tried to limit idle instances last time, all we got was
instance churn and bad latency. So we're on automatic/automatic these
days, and I'd prefer not to have to experiment again. Some advice
would be great.

That aside 1.6.5 is great of course! :)

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Re: The instance scheduler still has problems

2012-04-05 Thread Per

The scheduler is most likely made with larger applications in mind 
(hundreds of instances). I saw plenty of isses when I tried to optimise for 
few instances. I had very similar issues as you had, when I was on a 2/2 
setting for instance. Basically I wanted to have 2 instances all the time, 
and I tried 2/2, 2/3, 3/3, 1/3, and 1/2. 

But what works best (by far!) for me at the moment is the setting 
automatic/3. I decided to use the F4 instance as well. It now turns out I 
always have 2 or 3 instances running, but only get charged for one :) And 
very few spin-up and spin-down happening. And consistently fast responses 
too. 

Every app is different, so do experiment a bit. 



On Thursday, April 5, 2012 4:30:00 AM UTC+2, Tapir wrote:

 In my previous post, 


 http://groups.google.com/group/google-appengine/browse_thread/thread/c5ab4ec85c5b5525/b8f97af3ddcdcaa1?lnk=gstq=charming#b8f97af3ddcdcaa1
  

 I said after I rewrote the custom warm-up servlet, I found it works 
 like a charming. 
 Yes, the warm-up cases really becomes fewer, but now I find it still 
 exits. 

 After some research, I found the behavior of the instance scheduler is 
 uncertain. 

 Here is a case: one resident instance is idle, a new request coming, 
 the idle resident instance will handle it. At the same time, another 
 new request coming, the scheduler wait pending latency time, the idle 
 instance is still not free, so a new instance is started, which needs 
 20-30 seconds to warmup. After ***N seconds***, the scheduler found 
 the new instance is still not warmed-up and found the resident 
 instance is free now, so the scheduler let the resident instance also 
 hand the second new request. 

 The implementation is not bad, but the strange thing is ***N 
 seconds*** varies from 1 second to 30 seconds. 
 That is why some warm-up requests will be still encountered. 

 btw, I found affer I rewrote the custom warm-up servlet, 99% percent 
 cases of the effort to create a new instance are useless. The new 
 created instance will be shutdown without handling any user requests. 



-- 
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/-/PdQTyE299w4J.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: how do I get my 'Recipients Emailed' quota back after hrd migration?

2012-03-20 Thread Per


Hi Jose, thanks for that link. 

I just did the migration to HRD, and it was not at all obvious to me that 
this limit gets re-introduced despite having been a paying GAE user for a 
year now. The migration guide says to update billing, which I did. A link 
to the URL mentioned by Jose would have been very helpful. How about 
placing that link into 
http://code.google.com/appengine/docs/adminconsole/migration.html ?

Cheers,
Per



On Saturday, March 17, 2012 4:21:41 AM UTC+1, Jose Montes de Oca wrote:

 Hi,

 Please fill out this form for your use case: 
 https://docs.google.com/a/google.com/spreadsheet/viewform?formkey=dENESzEwNzJiZEdpQkRzTl9RNElVWUE6MQ#gid=0

 Hope this helps!

 On Friday, March 16, 2012 8:22:09 AM UTC-7, Karl Rosaen wrote:

 Ok, I know see that the limit is 100 until the first charge is cleared:

 http://code.google.com/appengine/docs/quotas.html

 but given we just migrated an app, waiting for up to a week for the first 
 charge to go through is not really acceptable... I'll try to file a 
 production ticket about this, but I would hope that the migration tool, 
 when used with an app in good standing, could transfer the email quotas to 
 avoid disruption of sending emails.


 On Friday, March 16, 2012 11:14:11 AM UTC-4, Karl Rosaen wrote:

 Hi, I just migrated our app to the high replication datastore, billing 
 enabled and everything.

 I can't seem to adjust or opt in to pay more for the mail api quotas, 
 and the default limit of 100 recipients emailed is not nearly enough and 
 it's disrupting our application.

 In our previous app, our quota for 'Recipients Emailed' was 1,771,789, 
 I think I opted in to pay more for that limit a while back.

 Anyways, how do I get my quota back? We're willing to pay!



-- 
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/-/c5onwEdK2A4J.
To post to this group, send email to google-appengine@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.



Re: [google-appengine] Re: Fwd: 1.6.4 Prerelease Now Available

2012-03-20 Thread Per


 - Billed applications which have specified additional logs storage over 1 
 GB
  are now being charged for that storage at $0.24/GB/month.

 What's actually happening is that we are hiding logs, but once 1.6.4 is 
 released, we will be deleting logs greater than 1gb. With 1.6.3 we released 
 some settings for people to tweak Log Retention in Application Settings (
 http://googleappengine.blogspot.com/2012/02/app-engine-163-released.html).



Hi Ikai, definitely noticed. Excellent! Also, fairly modest pricing. Thanks!

 

-- 
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/-/gnDObs8D9SMJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Do maintentance periods really have to be during core working hours?

2012-03-14 Thread Per
Although I'm overall happy with GAE, and I know that the maintenance 
periods only affect M/S. And I don't mind the occasional one either. But 
I find it increasingly frustrating that they always have to be scheduled in 
the middle of the week, and during a time that most of our US clients would 
still call core working hours. 

I am now pasting the third downtime notice in a month onto our 
application's dashboard. Yeah I know that one maintenance period didn't 
actually happen, but it was cancelled too late, all our clients had already 
gotten our downtime warning, which is almost as bad.

I am wondering why these maintenance periods cannot be done on the weekend, 
or at least later during the day? How about 6pm to 8pm PST for instance? 
That's still late at night in Europe, it's just about as annoying for APAC, 
but at least it's a lot better for US users. And it's not *that* late so 
that East Coast Googlers have to get up in the dead of the night either.

Or am mistaken and the typical usage pattern is after hours, because 
nobody except for us dared to use GAE for an enterprise application? :)

-- 
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/-/bK7kFbD_8E4J.
To post to this group, send email to google-appengine@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.



[google-appengine] Application down, no graceful degradation despite checking the capabilities API

2012-03-07 Thread Per
Hi there,

during previous maintenance periods our application degraded gracefully, as 
we do check the Capabilities API before each request, and don't write 
anything to the datastore if the Capabilities API tells us that it's not 
available.

This time around though I just get a Google Exception, and the stacktrace 
doesn't look like our code is being called at all. Are we doing something 
wrong, any suggestions how to avoid this next time? Or is it a Google 
problem?


Uncaught exception from servlet
com.google.apphosting.api.ApiProxy$CapabilityDisabledException: The API call 
datastore_v3.Put() is temporarily unavailable: Datastore writes are temporarily 
unavailable. Please see http://code.google.com/status/appengine for more 
information.
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:746)
at 
com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at 
com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at 
com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:788)
at 
com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.success(RpcStub.java:773)
at 
com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:888)
at 
com.google.net.rpc3.impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:793)
at 
com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1049)
at 
com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:895)
at 
com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2248)
at 
com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2060)
at 
com.google.net.rpc3.impl.client.RpcNetChannel.access$2000(RpcNetChannel.java:147)
at 
com.google.net.rpc3.impl.client.RpcNetChannel$TransportCallback.receivedMessage(RpcNetChannel.java:3097)
at 
com.google.net.rpc3.impl.client.RpcChannelTransportData$TransportCallback.receivedMessage(RpcChannelTransportData.java:602)
at 
com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:420)
at 
com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseOneMessage(RpcClientTcpTransport.java:773)
at 
com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseMessages(RpcClientTcpTransport.java:651)
at 
com.google.net.rpc3.impl.wire.RpcClientTcpTransport.access$100(RpcClientTcpTransport.java:38)
at 
com.google.net.rpc3.impl.wire.RpcClientTcpTransport$1.dataReceived(RpcClientTcpTransport.java:293)
at 
com.google.net.async3.SocketConnection.handleNetworkReadEvent(SocketConnection.java:843)
at 
com.google.net.async3.SocketConnection.access$400(SocketConnection.java:40)
at 
com.google.net.async3.SocketConnection$NetworkReadHandlerImpl.run(SocketConnection.java:872)
at 
com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260)
at 
com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
at 
com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:576)
at 
com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:997)
at 
com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:878)
at 
com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:134)
at 
com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1833)



Cheers,
Per

-- 
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/-/fY3zdxODD8sJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: Application down, no graceful degradation despite checking the capabilities API

2012-03-07 Thread Per
Ok, turns out this is only happening when you already have a session. The 
capability check does work if you don't have a session. So it's not as bad, 
but I'm still puzzled. Any ideas?

-- 
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/-/Y0onWpsO7XAJ.
To post to this group, send email to google-appengine@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.



[google-appengine] Re: What's going on with the high latency ?

2012-02-28 Thread Per

Without doubt, plenty of people will now advise you to upgrade to the
HRD for christ's sake, and then you'll read today's latest post about
entity kinds gone missing during the migration, and then you'll be
back at square 1. At least that's my situation right now, again. But
yeah, your only choice is really to find a way to migrate to the HRD.



On Feb 28, 8:31 pm, Alain de Raynal aderay...@gmail.com wrote:
 http://code.google.com/status/appengine/detail/datastore/2012/02/28#a...

 my apps have been unreachable for the past 30 minutes...

 please help

-- 
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-appengine@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.



[google-appengine] Re: What is a good pattern to display and sort long lists? Work around the 1MB memcache limit? Or something else?

2012-02-08 Thread Per
Thanks so much Sameer and Robert,

the zipping really blows me away! Since Snappy and Ning Compress don't
work on GAE, I resorted to plain DeflaterOutputStream, and it turns
out it's fast and efficient as well. It's  shrinking some 1.4 Megabyte
of list data to 150K within 200ms (on F4, admittedly), which is
outstanding (remember, this only happens on admin pages where the
admin doesn't mind waiting a second or two). It's so fast I'm even
considering to use it on the session itself (we use Wicket, which
stores page-representations in the session, which means we may reach
the 1M limit if we don't evict old pages quickly). Brilliant hint.

I'll probably still need to implement the bucketing that Jeff
mentions, but not for the next 6 months.

Happy
Per

-- 
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-appengine@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.



[google-appengine] What is a good pattern to display and sort long lists? Work around the 1MB memcache limit? Or something else?

2012-02-07 Thread Per

Hi all,

say I have a few hundred users in one organisation, and I want to
display them in a list. I want to be able to sort them by user name,
or manager, or some other criteria. Right now I load them from the
database all in one go, sort them, store them in memcache, and then
during pagination, I load them from that memcache each time the user
clicks forth or back. When the user changes the ordering, I load the
list from memcache, re-order, and store it back.

This works fine for 1000 users (each of them has some 15 fields).  Now
if I had a few thousand users, I'd have to make sure the user objects
are not  too big, or the list will be more than 1 megabyte. I can
denormalise into a slimmer user object, which makes database access
faster too. But what if I want to display 10.000 or more users -- Each
user object can't have more than 100 bytes then, because of the
memcache limit of 1MB. But that's not even enough for even the most
basic fields.

Is the solution to split the list into several memcache blocks? If so,
are there any libraries or tools that support this? Or am I barking up
the wrong tree, should I deal with this in an entirely different way?
I did some googling, but the main questions (and answer) was always
around speeding up the initial database call. This is working fine for
us, and it doesn't matter if it takes a few seconds either.

Feedback from people who have dealt with similar issues would be
greatly appreciated! :)

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Re: What is a good pattern to display and sort long lists? Work around the 1MB memcache limit? Or something else?

2012-02-07 Thread Per
Thanks, hadn't thought about the zipping yet. Any recommendations?

The query cursor would work fine if there was no sorting involved -
but since this is not the only list to be sorted, and since each sort
requires a separate index, the number of indexes would get out of
control quickly. We're already at some 100 indexes, and I'd rather not
create new ones unless really needed.

Cheers,
Per


On Feb 7, 11:36 am, Sameer Lodha sams...@gmail.com wrote:
 One tip is to Zip data before you put it into memcache. That way you
 can easily store 4x to 10x more information. But again there would be
 limit to how much you can save.

 Beyond that, I think the better approach would be to use Query Cursor
 to get just the required data (to be displayed) at runtime.

 Regards,
 Sam







 On Tue, Feb 7, 2012 at 3:39 PM, Per per.fragem...@gmail.com wrote:

  Hi all,

  say I have a few hundred users in one organisation, and I want to
  display them in a list. I want to be able to sort them by user name,
  or manager, or some other criteria. Right now I load them from the
  database all in one go, sort them, store them in memcache, and then
  during pagination, I load them from that memcache each time the user
  clicks forth or back. When the user changes the ordering, I load the
  list from memcache, re-order, and store it back.

  This works fine for 1000 users (each of them has some 15 fields).  Now
  if I had a few thousand users, I'd have to make sure the user objects
  are not  too big, or the list will be more than 1 megabyte. I can
  denormalise into a slimmer user object, which makes database access
  faster too. But what if I want to display 10.000 or more users -- Each
  user object can't have more than 100 bytes then, because of the
  memcache limit of 1MB. But that's not even enough for even the most
  basic fields.

  Is the solution to split the list into several memcache blocks? If so,
  are there any libraries or tools that support this? Or am I barking up
  the wrong tree, should I deal with this in an entirely different way?
  I did some googling, but the main questions (and answer) was always
  around speeding up the initial database call. This is working fine for
  us, and it doesn't matter if it takes a few seconds either.

  Feedback from people who have dealt with similar issues would be
  greatly appreciated! :)

  Cheers,
  Per

  --
  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-appengine@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://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-appengine@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.



[google-appengine] Re: Frontend Instance Class (Default F1? 128MB?) All my instances have been running around 256MB

2011-12-14 Thread Per
I'm confused by these changes too. Although I'm happy to have choice
(pay more for more speed sounds awesome) this leaves an odd
aftertaste  After all the communication issues around the recent
pricing changes, shouldn't it be quite obvious that people will ask
you about the details anyway? Wouldn't it help to spend a couple
minutes upfront, explaining this change/new feature better? Surely you
have spent many hours working on the implementation, why not share
some additional insight?

By default, all applications use the basic frontend instance setting
of 128MB memory and  600MHz CPU.

So, if F1 is what we've been using the past months, why don't you just
say so.  And if it happened to be F2, then people will find out
eventually, and you should say to too.

I can see a mysterious drop in performance of my application since the
22nd of November. I have not analysed it yet (it only occurred to me
now, since I was busy), but it would help a lot if you'd take the
guesswork out of these announcements -- because otherwise I am
somewhat tempted to believe that we've been on something similar to F2
and will now have to pay more to achieve the same old performance.
Please tell me it's not like this, and I'll shut up instantly :)

Cheers,
Per



On Dec 14, 12:03 pm, Scott Murphy sc...@pixoto.com wrote:
 Hi, I am confused.  Did the default used to be F2?  All my instances run 
 128MB of ram. How is this possible?  Does this mean that part of the memory
 is swapped to disk?  If I choose a larger instance class say (F4), will my
 Java Heap size automatically change to allow up to 512MB heap? Or is this
 extra memory not usable by the app?

 0..0 ms108112:44:46170.1 MBytes[image: Resident Icon]Resident0..0 ms
 27701 day, 21:07:27190.0 MBytes[image: Resident Icon]Resident0.0171905.0 ms
 14101 day, 5:35:31182.7 MBytes[image: Resident Icon]Resident0.4331114.4 ms
 402102:49:43239.3 MBytes[image: Dynamic Icon]Dynamic0..0 
 ms109701:00:15203.4
 MBytes[image: Dynamic Icon]Dynamic0..0 ms12500:12:01197.4 MBytes[image:
 Dynamic Icon]Dynamic0.2331295.7 ms48500:22:12192.7 MBytes[image: Dynamic
 Icon]Dynamic0.4671081.0 ms696734:08:09245.1 MBytes[image: Dynamic Icon]
 Dynamic0.3831486.6 ms367314:03:36243.4 MBytes[image: Dynamic Icon]Dynamic
 0..0 ms641304:15:35243.5 MBytes[image: Dynamic Icon]Dynamic0.0503124.3
 ms600:02:07149.5 MBytes[image: Dynamic Icon]Dynamic0.05030326.0 
 ms200:00:40136.2
 MBytes[image: Dynamic Icon]Dynamic0.5671189.9 ms551503:33:30244.8 
 MBytes[image:
 Dynamic Icon]Dynamic

-- 
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-appengine@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.



[google-appengine] Re: a happy developer

2011-11-30 Thread Per
I agree. I still think some communication issues could have been
handled better, but the technology is pretty awesome, and getting
better all the time! Also, everything has been steadily growing faster
for us,  I really enjoy how responsive our application is these days.
Keep up the amazing work!

Cheers,
Per



On Nov 30, 10:59 pm, alex a...@cloudware.it wrote:
 I've seen many people bashing GAE dev team, especially lately.

 What I want to say here is, I've been using it for years now and it's
 pretty awesome what you guys have been doing and where you've gone
 today. Of course there are bugs and stuff you need to find workarounds
 for but it is nowhere near compared to the burden of managing a
 cluster of EC2 on AWS or pay a double to Heroku or RackSpace even if
 they're great platforms too.

 I'm using GAE whenever I can and wherever it fits but I often find
 myself stuck with companies that by all means want to keep their data
 on the servers behind their desks (almost literally) and that's where
 one truly understands what it means to design, maintain and keep up
 with any sorts of upgrades of a multitenant infrastructure. IT'S HARD.

 So, this is from a (very happy) developer on GAE, AWS, Heroku,
 RightScale and an admin of a custom designed in-house multitenant
 infrastructure to GAE team: you're doing an awesome job. Keep it up!

 alex.

 PS Brandon, please no self-promotional replies with 10k-a-day clients
 and porn sites. thanks.

-- 
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-appengine@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.



[google-appengine] Short-notice reschedule of maintenance mode

2011-11-30 Thread Per
Hi there,

our application is unfortunately unusable during maintenance mode, so
we add large banners informing our clients about upcoming maintenance,
a few days ahead. We don't have the capacity to upgrade to HRD at the
moment (it still seems somewhat risky), but that's okay.

It's not so great though that maintenance gets cancelled one hour
ahead of time, and then rescheduled to next week, meaning we now have
to add these banners again and look like we don't really know what
we're doing. Maybe you could inform us a bit earlier than 1 hour ahead
next time? Totally understood that this *can* happen, and I don't want
to sound too negative either, just saying it's not ideal for us, and
possibly to others too who rely on the datastore for most operations
in the application.

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Re: Billing history stopped 5 day ago

2011-09-07 Thread Per
Same problem here. Two of my apps are stuck 5 days ago. But the one
that I disabled the always-on option is showing a 2 day old billing,
and that's actually already taking into account my change in the
billing (new pricing==1 cent, but only because it's my QA environment
that's pretty idle). Maybe you have to change the pricing a little bit
to kick off the job for the billing history.


Cheers,
Per



On Sep 7, 11:51 am, Alex Popescu a...@mypopescu.com wrote:
 In the light of the new billing details, I've made some changes to the Max
 Idle Instances and Min Pending Latency (as per the optimization
 documentation) just to see how these would reflect in my bill. Anyways my
 billing history has stopped 5 days ago on Sept. 2nd.

 I'm really confused on how to proceed right now. I know that I have to get
 ready for the moment the new pricing becomes effective, but if I don't have
 the tools to estimate my costs and understand what optimizations I can do,
 then I don't seem to be left with much to do.

 Could anyone clarify why billing history has stopped? Also, how soon changes
 to the above configurations would be reflected in the billing history?

 tia,

 A://

 PS: Application ID: twimblr. I do have other applications each with its own
 different billing status (most recent being from Sept.5th, which is OKish).

-- 
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-appengine@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.



[google-appengine] Re: How do I set maximum total instances to 1 ? OR How do I run my app for free for 24 hrs a day ?

2011-09-07 Thread Per
I changed my QA environment down from the always-on option, and set
max-idle==1, and I set the pending latency to 300ms.

The instance was up for 24h (restarted about 11h ago the last time):
It's just a QA box, but the cron jobs run and seem to keep it alive
well. E.g. no latency either.

My charge under the new pricing regime is 1ct for the day.  Even if
there were a bit more load, I expect additional instances would get
spun up and down again pretty quickly, and not cost me (or you) much.
All good!

Cheers,
Per



On Sep 7, 11:12 am, Gerald Tan woefulwab...@gmail.com wrote:
 I believe even if you have additional instances spawned for you, you are
 only charged for 1 instance (which should be your max idle instance setting)
 + active instances, which should be a very small number. Now you will see
 either one of two situations:

 1) You have enough time when there are 0 instances up to make up for the
 active instance numbers, in which case your app should have no problem
 serving requests all day
 2) You have an instance up all the time, in which case your app will be
 automatically shutdown when you run out of quota near the end of the billing
 day, probably for around 30mins to an hour depending on your active instance
 time, until the daily quota resets.

-- 
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-appengine@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.



[google-appengine] Will you prohibit to keep the free instance up and running permanently? Or is it a best practice now?

2011-09-07 Thread Per
Hi,

I just disabled the always on option for my QA application, wanting
to experiment with the new pricing model. Instead, I set the max-idle
to 1, and I defined a 300ms latency in the application settings. The
QA box is rarely used, but since the Cron-Jobs keep running every 5
minutes to clean up stuff, there was always some base load.

I checked out the stats, and it turns out there was always one
instance up in the past 24 hours, and the currently active instance is
11h old. That's perfect for me: the less instance restarts we have,
the faster the app will react (since startup takes some 5 to 10
seconds). Overall, this QA box cost me a mere 1ct under the new
pricing. Great news!

Is this too good to be true? When App Engine started out, new
instances got killed after 60seconds, and it was officially prohibited
to ping instances to keep it alive. Will that happen again? Or is it
fine to consume the free 1 instance permanently?

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Re: Will you prohibit to keep the free instance up and running permanently? Or is it a best practice now?

2011-09-07 Thread Per
It's M/S, but thanks for the quick answer. Very appreciated!

Cheers,
Per


On Sep 7, 6:25 pm, Jon McAlister jon...@google.com wrote:
 Hi Per,

 I'm going to make a wild guess here and assume you are using the High
 Replication Datastore. Apps which have selected this are presently
 running on a set of machines that have the properties you describe.
 Rather than having idle instance processes evicted after some number
 of minutes, they hang around for hours. This is because of the present
 ratio of cpu to memory pressure on those machines; essentially, it's a
 by-product of the present supply and demand for that subset of apps
 and machines.

 It will certainly change but probably not for several months yet.
 Eventually it will have the same behavioral patterns as you see for
 M/S-D apps.

 If you'd like to keep one instance up always though, when the billing
 rollout is complete you'll be able to set min-idle-instances=1.







 On Wed, Sep 7, 2011 at 4:56 AM, Per per.fragem...@gmail.com wrote:
  Hi,

  I just disabled the always on option for my QA application, wanting
  to experiment with the new pricing model. Instead, I set the max-idle
  to 1, and I defined a 300ms latency in the application settings. The
  QA box is rarely used, but since the Cron-Jobs keep running every 5
  minutes to clean up stuff, there was always some base load.

  I checked out the stats, and it turns out there was always one
  instance up in the past 24 hours, and the currently active instance is
  11h old. That's perfect for me: the less instance restarts we have,
  the faster the app will react (since startup takes some 5 to 10
  seconds). Overall, this QA box cost me a mere 1ct under the new
  pricing. Great news!

  Is this too good to be true? When App Engine started out, new
  instances got killed after 60seconds, and it was officially prohibited
  to ping instances to keep it alive. Will that happen again? Or is it
  fine to consume the free 1 instance permanently?

  Cheers,
  Per

  --
  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-appengine@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://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-appengine@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.



[google-appengine] Re: Google, What are you doing? (suggestion)

2011-09-01 Thread Per
Full agreement here. For us it's not the pricing increase that makes
us feel so uneasy, a price hike was to be expected. It's the seeming
lack of experience with enterprise products and how to communicate
upfront that makes me afraid. I doubt that other Google products, e.g.
Adwords, would make such drastic changes at such short notice.

At my previous employer, one of the five Company Values was Don't
f*ck the customer.  It applied to every single employee, no matter if
in engineering, sales or marketing, no matter if you're the VP or the
intern, and it really kept everyone honest. People make mistakes (we
sure did), you can't please everyone (we certainly didn't) but at
least you have to try real hard. I'd like to see more of that from the
product management team here.

I'm on Java, but the Python 2.7 discussion looks like a big failure in
management to me. This does not seem like the best way to treat your
customers. When you said second half of 2011, why didn't you pick
mid October or mid November instead if you didn't have solutions to
these problems yet. Could have saved you a lot of frustration from all
I can see.

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Our new performance tuning best practices document

2011-08-27 Thread Per
Hi all,

August was a pretty tough month for us, since the 1.5.2 release and
the datastore issues really exposed some of our inefficient code. But
we've learned and improved, and our app is faster than ever.  Check
out our new best practice document:

http://www.small-improvements.com/app-engine-performance-tuning

Nothing earth-shattering, but upfront knowledge would have saved us a
lot of work. Happy to add more hints if you have any. Thanks again to
Simon Knott for suggesting to check out JARing classes to improve
speed. You're our hero!

Cheers,
Per

-- 
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-appengine@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.



[google-appengine] How to deal with the current Memcache outages?

2011-08-25 Thread Per
Hi,

i spent quite some time optimising datastore access since it was so
unreliabale in the past weeks. Now using memcache intensely throughout
the application. Only to find out that memcache has been flaky for
some 4 hours now, with error rates between 10% and 70%.  What's the
recommended strategy to dealing with a situation like this?

Since the memcache isn't entirely down, I don't want to take the app
down just just yet. But it would be great if I could at least show an
automated warning sign (this happened over night). The Capabilities
API only has enabled or disabled -- it would be nice if you could
query the error rate just as it shows up on the system status. Or do
some other tools or libs exist (I'm on Java..)?

I'm open to other ideas, how does everyone else deal with this outages
and error rates? Any other suggestions would be greatly appreciated.

Cheers,
Per


PS: While I'm at it, let me also express my frustration at the system
status page. Only 10 minutes ago there was a 70% error rate spike, but
the overall status is Green again. I wouldn't be surprised if
tomorrow the system status is all Green for today as well, despite
these serious problems. I understand that errors occur (and that
you're working hard at fixing them),  but  it leaves an odd aftertaste
if these errors get glossed over after a while.

-- 
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-appengine@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.



[google-appengine] Re: How to deal with the current Memcache outages?

2011-08-25 Thread Per
Actually, forget it, my mistake.  I think I was simply not catching
enough exceptions while putting stuff into the memcache. Obviously,
you should never reply on the memcache being there at all, and just go
to the datastore instead. Must drink more coffee before posting.
Sorry about that!

Per

-- 
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-appengine@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.



[google-appengine] Re: Classloading still way too slow. Any recommended practices? (yes, I am using warmup requests already)

2011-08-20 Thread Per
Actually, you're right, never mind the behind the scenes business.
But if your internal tests confirm that JARs are faster to load,
please add a note to the docs, this would have saved me a lot of time
experimenting with various workarounds.

Cheers,
Per


On Aug 20, 12:21 am, Jose Montes de Oca jfmontesde...@google.com
wrote:
 Hi Peter,

 I think we don't make this for you behind the scenes because there is an
 specific use case where this would not work: For files that you want to
 override that are already in a jar file, this files should remain in the
 WEB-INF/classes folder.

 one alternative would be to modified the jar you are overriding and replace
 the clase with your own.

 Best,
 Jose Montes de Oca

-- 
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-appengine@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.



[google-appengine] Re: Classloading still way too slow. Any recommended practices? (yes, I am using warmup requests already)

2011-08-19 Thread Per
Simon, you are my hero!!

I had been deploying the classes and the html raw, e.g. from web-inf/
classes, but it turns out it's 20 to 100 times slower this way!! I
packaged everything up in one neat jar, and now my application flies
again. Even deployment is faster than before.

I guess it wasn't such a problem prior to 1.5.2 because the 3 resident
instances would warm up rather quickly, but the new post 1.5.2 scheme
spins up new instances all the time, so you get this problem all the
time.

Hello Googlers, in case your reading, IMO this belongs in the manual.
The difference between the local devserver and the actual production
system is really massive in this respect, and it's been haunting me
for a while now. A simple bullet-point please deploy jars only would
be nice.

Cheers,
Per



On Aug 16, 5:30 pm, Simon Knott knott.si...@gmail.com wrote:
 Have you tried deploying the classes as a JAR?  I only ask, because I seem
 to remember someone posting recently who was complaining that file reading
 on GAE appeared to be slow - maybe it's not the classloading which is
 actually taking the time, but reading the class files from disk (which seems
 a bit ridiculous really).

-- 
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-appengine@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.



[google-appengine] Re: Classloading still way too slow. Any recommended practices? (yes, I am using warmup requests already)

2011-08-19 Thread Per
The classes above took anything from 100ms to 500ms under normal
conditions, and could take up to several seconds when things got
really pear-shaped. Now that everything is jarred up, the classloading
happens in 20ms to 30ms on average, pretty much as it does on the
local devserver. I am sure it will also be slower under big stress,
but still, that's a substantial improvement already.

Adding it to the deployment tool would be great IMO. I was worried
that jarring everything up would make deployment slow (always
deploying a big 1MB jar instead of a couple classfiles only) but to my
surprise it's a lot faster this way. Deployments are fun again! :)


On Aug 19, 10:38 pm, Ikai Lan (Google) ika...@google.com wrote:
 We suspected this was the case but this is good information. Do you have
 specific numbers? If not, that's fine. I'll do the measurements myself. If
 it's significant, it could even be worth building into the deployment tool
 itself.

 --
 Ikai Lan
 Developer Programs Engineer, Google App Engine
 plus.ikailan.com | twitter.com/ikai







 On Fri, Aug 19, 2011 at 1:35 PM, Simon Knott knott.si...@gmail.com wrote:
  Wow, glad it worked so well!

  Time to go and Jar my classes up as well...

  --
  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/-/-WlJUmVddaYJ.

  To post to this group, send email to google-appengine@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.

-- 
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-appengine@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.



[google-appengine] Classloading still way too slow. Any recommended practices? (yes, I am using warmup requests already)

2011-08-16 Thread Per
After using appstats for weeks now, reducing queries and offloading a
lot to memcache, our application is pretty fast despite the abysmal
performance of the datastore. Once it's been serving for a few
minutes, that is.

But: Very many pages of our application take several seconds (4 to
6s!) to load for the first time, even despite warmup requests and
several other pages having been executing on the same instance
already.  Appstats clearly shows that the API calls are not to blame,
and running a local profiler doesn't indicate any problems either.

I added some more classloading (Class.forName()) to the warmup
requests, and it turns out classloading is frequently the cause.
Sometimes it takes 100ms to load 20 large classes (and their anonymous
inner classes). But sometimes it takes 8 seconds! Occasionally it
takes more than 15s, and the warmup request dies!

I'm now considering to let the warmup request call additional
webpages, so that these request warm up the classes instead. However,
given that these new http requests might end up on *other* instances,
it's not really a great option. It will increase probablilty of
classes being loaded, but it's not a guarantee.

So my question: Is there a recommended way of loading classes before
the user tries to get them? Is there a way to chain warmup requests
for instance, e.g. a guarantee that the next request will be on the
same instance? That would help a lot.


Cheers,
Per


PS: As much as I love App Engine and the power it brings, I find it
extremely annoying to have to fiddle with unreliable classloading
performance, and queries that take 300ms on average.  Maybe I was
overly ambitious in coding a complex application on App Engine, maybe
App engine's goal is really just outsourcing large volume processing
(and not rich user-centered web applications), but the warning signs
are clearly missing then.

IMO, speed and reliability are much more important than anything else,
and as much as I'd love to see SSL support for custom domains,
fulltext search, etc I'd really prefer these core problems solved
first. Just my 2 cents.. :)


-- 
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-appengine@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.



[google-appengine] Re: Classloading still way too slow. Any recommended practices? (yes, I am using warmup requests already)

2011-08-16 Thread Per
Hi Simon,

these classes are all our own and they come from web-inf classes. I
double checked that it actually doesn't load anything else, using the -
verbose option locally.

Here's the code snippet showing just the first batch. This can take up
to 8 seconds to load remotely (but also be as fast as 120ms), while it
takes only 20ms to 50ms locally...

try {
 
Class.forName(com.praisemanager.web.general.panels.comment.view.CommentPanel);
 
Class.forName(com.praisemanager.web.general.panels.comment.view.CommentListPanel);
 
Class.forName(com.praisemanager.web.general.panels.comment.view.ViewRepliesAjaxLink);
 
Class.forName(com.praisemanager.web.general.panels.comment.view.CommentRestrictionsPanel);
 
Class.forName(com.praisemanager.web.general.panels.comment.ReplyCommentPanel);
 
Class.forName(com.praisemanager.web.FeedbackRequestPage);
Class.forName(com.praisemanager.web.EditCommentPage);
 
Class.forName(com.praisemanager.web.general.panels.comment.view.UnveilAnonymousAjaxLink);
 
Class.forName(com.praisemanager.web.general.panels.characters.PersonTab);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}


Cheers,
Per



On Aug 16, 2:27 pm, Simon Knott knott.si...@gmail.com wrote:
 Are these classes your own, or from third-party libraries?  

 Do you deploy your own classes inside a JAR, or just within WEB-INF classes?

-- 
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-appengine@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.



[google-appengine] Re: GAE Starts dynamic instances for no reason... causing unnecessary cold start delays

2011-07-31 Thread Per
Hi Jon and Ikai,

I've been seeing crazy amounts of warmup requests all week. For
instance, while one request was being served, 5 to 7 instances started
up *simultaneously*, although there was no other load. Now, the *next*
request was almost guaranteed to hit one of the new instances, which
are warmed up, but not 100% hot... and thus takes a long time to
load... which spins up a few *new* instances.  The app used to have a
startup time of 5 to 6 seconds, and it used to respond within 400ms to
800ms, with only a few heavy pages being a lot slower. Not a lightning
fast app, but it worked really well before 1.5.2.  Now response times
have dropped by factor 3 to 5, which takes even normal requests into a
really awkward 2 to 3 second range. This has been plaguing the
application all week, and I had no clue what was going on.

I figured out that I needed to limit the the idle VMs to 3 to, so I'd
at least avoid having 3-7 new idle VMs per request and always hitting
luke-warm instances. That's better, but there is still an awful lot of
spinning up and spinning down going on, and every 3rd or 4th request
or so still goes to a warm-but-not-hot VM, taking 3 seconds or so.

I don't really care about the billing at the moment, but it is really
embarrassing me in front of our customers to have such a slow
application all of a sudden. I've been working the weekend on some
general profiling to mitigate, but please make this stop, or give us
more control so we can determine how soon a new instance is created
(in my case, not so soon...)

Does this also change the recommended approach to warmup-request in
general?  So far, I had only warmed the most crucial parts of the app,
since the doc states that requests may as well hit a cold instance,
and you wouldn't want to wait for 20s until really the entire app was
piping hot.  Instead of doing an extreme 20 seconds warm-up, the
instances would gradually hotten up with each new request coming in.
But now instances go up and down a lot, so each one is barely luke-
warm, and thus slower on average. I'd change the warmup sequence to
20s of heavy exercises if it helped,  but that would spin up even more
instances... oh dear. :)


Cheers,
Per

-- 
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-appengine@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.



[google-appengine] Re: Thursday 7/14 Downtime

2011-07-18 Thread Per

Hi Nick,

my application has just been stuck and throwing exceptions for about
an hour. I understand that you need to schedule maintenance periods at
short notice, but as far as I can tell, this was announced 2 days
ahead in the forum, but not posted into the downtime calendar like I'd
expect. I have 5 notification (email AND sms) on that calendar because
I really need to communicate downtime to our customers upfront. Did I
miss something obvious? Even now I can find the downtime announcements
from April and May in that calendar, but not today's downtime.

I just realised there's a new sentence in your recent announcement:
Most importantly, sign up to receive notices from the App Engine
 To my knowledge that was not mentioned in the previous
announcements,  the previous announcements only directed us to the
calendar. I get the feeling this downtime was not handled as well as
it should have been. But, I'm happy to learn, please let me know what
the best way is to stay up to date reliably.

Cheers,
Per



On Jul 13, 7:14 am, Nick Johnson (Google) nick.john...@google.com
wrote:
 Hi Ryan,

 On Wed, Jul 13, 2011 at 12:33 AM, Ryan Goldstein r...@moberg.com wrote:
  Regarding
 https://groups.google.com/d/msg/google-appengine-downtime-notify/C7d8...
  ...

  1. I assume the subject stating July 15 is incorrect, and the real date is
  Thursday, July 14, as in the body.

 That's correct.



  2. Will this downtime affect apps that don't use the datastore (i.e. only
  use the Google Spreadsheets API to read/write data)?

 Only insofar as it will also result in Memcache being cleared. Other than
 that, your app will continue to serve as normal.

 -Nick Johnson



  Thanks,
  -Ryan

  --
  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/-/Sdy_q1wx20cJ.
  To post to this group, send email to google-appengine@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.

 --
 Nick Johnson, Developer Programs Engineer, App Engine

-- 
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-appengine@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.



[google-appengine] Re: Error when deploying to dev server

2010-03-21 Thread Per

I am seeing the same error after upgrading from 1.3.0 to 1.3.1.
Strange.  Did you find a solution?

Cheers,
Per

-- 
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.



[google-appengine] Re: Error: Server Error from Android phone, no log

2009-11-24 Thread Per Sandström
Thanks for the reply. Currently I am unable to reproduce the error. I
will investigare it further if it reappears and post here.

Cheers,
Per Sandström

On Nov 24, 1:09 am, Ikai L (Google) ika...@google.com wrote:
 I'd like to try to replicate this error, but I am getting a 401 when I
 attempt to POST arbitrary data to that url:

 curl -d a=1http://pg-sandstrom-guestbook.appspot.com/checklists

 What you should try to do is replicate the error using command line tools or
 by monitoring the low level request. If this URL works in a browser but not
 from an Android application, you should try to trace the request and find
 the difference between the requests.

 2009/11/23 Per Sandström pg.sandst...@gmail.com



  Hi!

  This is the exact message I retrieve when my servlet is the way I want
  it to be:

  htmlhead
  meta http-equiv=content-type content=text/html;charset=utf-8
  title500 Server Error/title
  /head
  body text=#00 bgcolor=#ff
  h1Error: Server Error/h1
  h2The server encountered an error and could not complete your
  request.pIf the problem persists, please A HREF=http://
  code.google.com/appengine/community.htmlreport/A your problem and
  mention this error message and the query that caused it./h2
  h2/h2
  /body/html

  But still, there are no entries in my admin panel-log under errors.
  However, I just noticed that they appear under requests like this:

       11-23 03:04AM 23.201 /checklists 500 41499ms 175cpu_ms
  175api_cpu_ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)
       See details

       81.224.65.211 - - [23/Nov/2009:03:05:04 -0800] POST /checklists
  HTTP/1.1 500 0 - Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)

  They take up 4ms CPU! I tried decreasing the amount of code that I
  executed to find the problem, but it only helped when I didnt access
  the permanent storage. So I tried deleting everything that I had
  stored, and after that it worked fine even after putting in new
  entries. However, my datastore only held ~40 entries. There are
  absolutely no reason for this kind of delay on my side. I have no
  loops in loops or potentially infinite while-loops or anything like
  that. I really do believe this is an error on the GAE-side. Also, I
  have now tried to once again fill the datastore with ~40 entries, and
  the CPU-time never goes over 250ms. This feels somewhat scary, since
  we are planning on releasing our product quite soon, and then the
  datastore will be much larger.

  On Nov 12, 8:28 pm, Ikai L (Google) ika...@google.com wrote:
   What is the exact error? Also, can you host a static asset and try to
   retrieve it with the Android application? I want to rule out that it's a
   connectivity issue.

   2009/11/11 Per Sandström pg.sandst...@gmail.com

I am doing an app that is supposed to be used from my android phone.
Some communication with my GAE-app works, but when I try to send a
post-message tohttp://pg-sandstrom-guestbook.appspot.com/checklistsI
get a server error. This only holds true from my android phones.
Nothing is shown in the Admin panel log, so I dont think the error is
due to my GAE-code. Any help would be greatly appriciated.
--~--~-~--~~~---~--~~
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-appengine@googlegroups.com
To unsubscribe from this group, send email to
google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
  google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com

For more options, visit this group at
   http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---

   --
   Ikai Lan
   Developer Programs Engineer, Google App Engine

  --

  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.comgoogle-appengine%2bunsubscr...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=.

 --
 Ikai Lan
 Developer Programs Engineer, Google App Engine

--

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.




[google-appengine] Re: Error: Server Error from Android phone, no log

2009-11-23 Thread Per Sandström
Hi!

This is the exact message I retrieve when my servlet is the way I want
it to be:

htmlhead
meta http-equiv=content-type content=text/html;charset=utf-8
title500 Server Error/title
/head
body text=#00 bgcolor=#ff
h1Error: Server Error/h1
h2The server encountered an error and could not complete your
request.pIf the problem persists, please A HREF=http://
code.google.com/appengine/community.htmlreport/A your problem and
mention this error message and the query that caused it./h2
h2/h2
/body/html

But still, there are no entries in my admin panel-log under errors.
However, I just noticed that they appear under requests like this:

  11-23 03:04AM 23.201 /checklists 500 41499ms 175cpu_ms
175api_cpu_ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)
  See details

  81.224.65.211 - - [23/Nov/2009:03:05:04 -0800] POST /checklists
HTTP/1.1 500 0 - Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)

They take up 4ms CPU! I tried decreasing the amount of code that I
executed to find the problem, but it only helped when I didnt access
the permanent storage. So I tried deleting everything that I had
stored, and after that it worked fine even after putting in new
entries. However, my datastore only held ~40 entries. There are
absolutely no reason for this kind of delay on my side. I have no
loops in loops or potentially infinite while-loops or anything like
that. I really do believe this is an error on the GAE-side. Also, I
have now tried to once again fill the datastore with ~40 entries, and
the CPU-time never goes over 250ms. This feels somewhat scary, since
we are planning on releasing our product quite soon, and then the
datastore will be much larger.

On Nov 12, 8:28 pm, Ikai L (Google) ika...@google.com wrote:
 What is the exact error? Also, can you host a static asset and try to
 retrieve it with the Android application? I want to rule out that it's a
 connectivity issue.

 2009/11/11 Per Sandström pg.sandst...@gmail.com





  I am doing an app that is supposed to be used from my android phone.
  Some communication with my GAE-app works, but when I try to send a
  post-message tohttp://pg-sandstrom-guestbook.appspot.com/checklistsI
  get a server error. This only holds true from my android phones.
  Nothing is shown in the Admin panel log, so I dont think the error is
  due to my GAE-code. Any help would be greatly appriciated.
  --~--~-~--~~~---~--~~
  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-appengine@googlegroups.com
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en
  -~--~~~~--~~--~--~---

 --
 Ikai Lan
 Developer Programs Engineer, Google App Engine

--

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=.




[google-appengine] Error: Server Error from Android phone, no log

2009-11-11 Thread Per Sandström

I am doing an app that is supposed to be used from my android phone.
Some communication with my GAE-app works, but when I try to send a
post-message to http://pg-sandstrom-guestbook.appspot.com/checklists I
get a server error. This only holds true from my android phones.
Nothing is shown in the Admin panel log, so I dont think the error is
due to my GAE-code. Any help would be greatly appriciated.
--~--~-~--~~~---~--~~
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-appengine@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
-~--~~~~--~~--~--~---



[google-appengine] one servlet stopped working

2009-10-12 Thread Per Sandström

So I just noticed that one of my servlets has stopped working. I get
att 500 error message. In the admin console, instead of a crash as I
expected, I am getting this message below. What is it? 40 seconds and
no CPU used. Is this temporary problems with google apps engine? It
has been like this all evening.

#

   1.
  10-12 09:55AM 03.698 /checklists 500 41115ms 120cpu_ms
120api_cpu_ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)
  See details

  83.248.35.150 - - [12/Oct/2009:09:55:44 -0700] POST /checklists
HTTP/1.1 500 0 - Apache-HttpClient/UNAVAILABLE (java 1.4),gzip(gfe)


--~--~-~--~~~---~--~~
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-appengine@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
-~--~~~~--~~--~--~---



[google-appengine] DatastoreNeedIndexException, but index present and serving

2009-09-25 Thread Per Sandström

Im trying to perform this query:

Query query = pm.newQuery(ListStore.class);
query.setFilter(user == userParam);
query.setOrdering(listPosition ASC);
query.declareParameters(long userParam);
ListListStore listStoreLists = (ListListStore) query.execute
(user);

My index looks like this:

ListStore
listPosition ▲ , user ▲
Serving

Still, I get a DatastoreNeedIndexException. Any suggestions? Full
stacktrace following:

/checklists
com.google.appengine.api.datastore.DatastoreNeedIndexException: no
matching index found.
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError
(DatastoreApiHelper.java:35)
at com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall
(DatastoreApiHelper.java:56)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$PreparedQueryImpl.runQuery(DatastoreServiceImpl.java:342)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$PreparedQueryImpl.access$100(DatastoreServiceImpl.java:269)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$PreparedQueryImpl$1.iterator(DatastoreServiceImpl.java:303)
at
org.datanucleus.store.appengine.query.RuntimeExceptionWrappingIterable.iterator
(RuntimeExceptionWrappingIterable.java:42)
at org.datanucleus.store.appengine.query.StreamingQueryResult.init
(StreamingQueryResult.java:77)
at
org.datanucleus.store.appengine.query.DatastoreQuery.newStreamingQueryResultForEntities
(DatastoreQuery.java:324)
at
org.datanucleus.store.appengine.query.DatastoreQuery.fulfillEntityQuery
(DatastoreQuery.java:310)
at org.datanucleus.store.appengine.query.DatastoreQuery.performExecute
(DatastoreQuery.java:242)
at org.datanucleus.store.appengine.query.JDOQLQuery.performExecute
(JDOQLQuery.java:84)
at org.datanucleus.store.query.Query.executeQuery(Query.java:1489)
at org.datanucleus.store.query.Query.executeWithArray(Query.java:
1371)
at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:243)
at guestbook.CheckLists.doPost(CheckLists.java:88)
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.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:237)
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:139)
at com.google.apphosting.runtime.JavaRuntime.handleRequest
(JavaRuntime.java:235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:4950)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:4948)
at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest
(BlockingApplicationHandler.java:24)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
359)
at com.google.net.rpc.impl.Server$2.run(Server.java:823)
at com.google.tracing.LocalTraceSpanRunnable.run
(LocalTraceSpanRunnable.java:56)
at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan
(LocalTraceSpanBuilder.java:516)
at com.google.net.rpc.impl.Server.startRpc(Server.java:778)
at com.google.net.rpc.impl.Server.processRequest(Server.java:351)
at com.google.net.rpc.impl.ServerConnection.messageReceived
(ServerConnection.java:437)
 

[google-appengine] how to delete indexes with java SDK

2009-09-25 Thread Per Sandström

The indexes required by my app was not automatically added. So I added
them in the datastore-indexes-auto.xml and deployed my app. However
this has only led to me having three different entities on the same
table, each holding different indexes. What I want to do is to remove
the two entities that has the wrong columns indexed. Right now my app
isn't working, and I guess this comes from it using the wrong entity,
which doesnt hold the necessary indexes. When running it I get:

com.google.appengine.api.datastore.DatastoreNeedIndexException: no
matching index found

--~--~-~--~~~---~--~~
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-appengine@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
-~--~~~~--~~--~--~---