Hopefully a fairly simple question, although I haven't found a straight forward answer anywhere yet.
We will releasing our app shortly, push messages are all tested and working. However we have only tested on a smaller scale. All messages to be sent are stored on our VPS, then once per minute they are all sent out at once, and then the table is truncated. So they are not going continuously, but they are going out in batches.
I presume that the APNS itself can handles 100,000s of messages at once, but would our server be capable of sending out 10k or 100k if the app was successful? The only info I have to hand is this:
Traffic: 300 GB
VPS CPU upper limit in MHz: Unlimited
VPS CPUS: 8 unit
VPS RAM upper limit in MB: 512 MB RAM
However none of the people working on the app have much direct experience with servers, so we don't know if it would bottleneck or not.
Thanks in advance everyone.
This heavily depends on the program responsible for sending those messages. Basically they will be quite small and probably they are loaded row-wise from the table and not stored anywhere afterwards. This means you don't have a lot of RAM usage. However if the program loads all of them in once and is written for example in PHP, you'll have a problem with RAM usage.
If you stay inside the traffic limit can be easily calculated with the number of expected messages times the average size of a message.
CPU will most likely not be a problem since you really don't process anything.
A problem that was not mentioned yet was the number of open connections. Depending on the frequency of updates and how/if you keep the connection alive between updates, if you have 100k users you will probably not be able to manage with only 1 server just because keeping open so many connections is not practicable.