Why am I getting OverQuotaException when trying to send an email? - google-app-engine

I have a free Java application running on GAE that needs to send 3 emails per day. It used to send 2 per day and it worked fine, but when I increased it to 3 it started throwing an OverQuotaException. All 3 calls to the Mail API are executed in the same method at 00:00 hs, but I understand that you can send up to 8 emails in the same minute within the free quota.
This is the exception:
com.google.apphosting.api.ApiProxy$OverQuotaException: The API call mail.Send() required more quota than is available.
What could be the reason behind this?

Are you sending the emails to multiple recipients? If so, each recipient is counted as a separate email.
Or you might be hitting the 340 KB/minute limit if your emails are long.
If your emails have several attachments, you might also be hitting the 8 attachments/minute or 10 MB attachments/minute limit.

Related

Stackoverflow quota for a day

I'm using stackoverflow in my meteor application,
I'm calling api directly from my code like below
HTTP.call("GET", urlString,{params:{site:"stackoverflow"}},function(error,result)
{
console.log(result.data);
});
I'm not using any oauth or client id secret id in my calls.
In the response, I'm getting a variable called quota. with maximum pings 300
Is that means I can only call the api for 300 times, I want more than that, I'm even ready to pay for it.
Is there a way to increase that number.
Thanks
You are throttled because you have not registered your application. If you register your application, you will receive a quota increase to 10,000 hits per day. You will want to read the authentication documentation on how to utilize the keys you receive from registering your application.

appengine website very slow processing requests

I have a website deployed on appengine that has a API.
On my computer I have a node.js script that sends data to the website using a POST through the API.
The problem is that while sometimes the website processes the requests fast (average of 1 per second), some other times it is very slow (average of 1 request per minute).
After some digging, I've found out that when that happens, 4 requests are processes very fast, and then the website does nothing for 4 minutes, repeating the process all over again, making the average time of 1 request per minute like said before. What could be causing this?
I don't know if it is very relevant or not, but I have a free appengine account.
Looks like a bug in your node.js script.
The Appengine has a limit of 60 seconds for external requests - its not possible that one
request blocks an instance for more than these 60 seconds. (And even if the instance is blocked,
the gae would spawn another one)
Other guesses:
check the access logs for first/warmup requests (eg. slow instance startup)
check the access-log to ensure that the gae actually recived the requests

getting "reached maximum number of connections" error with large volume of http requests on google app engine

I'm attempting to do some stress testing on my GAE application
to see how it's performance holds up with a large number of
simultaneous users. I tried having a 100 threads each send an https
requests within 1 second, but half of them failed with a 503 status code the following
message:
"Error: Connection not allowed: reached maximum number of
connections."
This is a paid app, so I tried upgrading the instance class and
setting up some idle instances, but it doesn't seem to make any
difference.
Is there a limit on the number of simultaneous connections? Or is
this because all the requests are generated from the same host?
Thanks
EDIT: Response to Kyle: I'm using jmeter and sending 100 simultaneous requests to google.com doesn't ahve any issues.
Response to Nick: I'm not expecting individual clients to send lots of simultaneous requests, I was trying to simulate 100 users sending 1 request each.
Unbeknownst to me, a colleague had added a custom throttling filter to our application :) I removed this from the web.xml and it solves the problem.

google app engine channel api limitations

I have been using Google app engine for ~2 years now and love it. I am tasked with making a game and I wanted to use GAE as the backend. From what I understand the Channels API is meant for this kind of application. I got the tic-tac-toe demo working and noticed that each client got its own channel. After reading the documentation a little closer I noticed that this is how the system is meant to be used. I then checked the quotas and limits in the docs and... was devastated. GAE will let me at a maximum create 60 new channels a minute. That means I can only have 60 new users a minute. This is so limiting that I cannot use this API.
So my questions are:
Am I doing it right (1 client = 1 channel)
Is the channel API the best API to use to update multiple clients about the current state of a game.
It can't really be only 60!? Can I pay for more per minute?
Keep in mind that channel tokens do not expire for two hours. This
means that if one client connects multiple times within the life of
that token, you can serve that same channel token again, thus not
counting as a creation.
But otherwise, yes, you are correct; 1 channel per 1 client per 2
hours.
The channel API is the best AppEngine API to use for this,
currently, although some users are pushing for integrated WebSocket
support.
60 is the max for paid billing. A whopping 6 per minute is the max
for free apps. They say that you can request an increase for
pretty much any resource, but the page they link to (and which I've
linked to here) specifically talks about CPU usage and QPS.

How do dynamic backends start in Google App Engine

Can we start a dynamic backend programatically? mean while when a backend is starting how can i handle the request by falling back on the application(i mean app.appspot.com).
When i stop a backend manually in admin console, and send a request to it, its not starting "dynamically"
Dynamic backends come into existence when they receive a request, and
are turned down when idle; they are ideal for work that is
intermittent or driven by user activity.
Resident backends run continuously, allowing you to rely on the state
of their memory over time and perform complex initialization.
http://code.google.com/appengine/docs/python/backends/overview.html
I recently started executing a long running task on a dynamic backend and noticed a dramatic increase in the performance of the frontends. I assume this was because the long running task was competing for resources with normal user requests.
Backends are documented quite thoroughly here. Backends have to be started and stopped with appcfg or the admin console, as documented here. A stopped backend will not handle requests - if you want this, you should probably be using the Task Queue instead.
It appears that a dynamic backend need not be explicitly stopped. The overvicew (http://code.google.com/appengine/docs/python/backends/overview.html) states that the billing for a dynamic backend stops 15 minutes after the last request is processed. So, if your app has a cron job, for example, that requires 5 minutes to complete, and needs to run every hour, then you could configure a backend to do this. The cost you'll incur is 15+5 minutes every hour, or 8 hours for the whole day. I suppose the free quota allows you 9 backend hours. So, this type of scenario would be free for you. The backend will start when you send your first request to it through a queue, and will stop 15 minutes after the last request you send is processed completely.

Resources