I'm after any guidance I can get on the following.
I have 2 B4J apps that run in parallel in AWS EC2 instance/s (essentially virtual PC/s running Windows 10).
App#1 is basically just an FTP server based on:
https://www.b4x.com/android/forum/t...plemented-with-socket-and-asyncstreams.74320/
with some minor mods, that accepts 4-6MByte jpgs from remote 6megapixel IP cameras and drops them in a buffer area on the AWS EC2 instance disk.
Going over this app it appears to be quite open ended (for want of a better term) - there do not appear to be any obvious explicit limits.
The IP cameras are pretty high tech with all sorts of internal buffering capabilities etc.
This app could be serving 16-20 IP cameras simultaneously each running 0.5-1 frames/sec at peak - a theoretical absolute peak load of about 1,200 MBits/sec. Generally all cameras will not be at peak output at the same time and I'm currently guessing a real peak of no more than 300-600 MBits/sec.
The networking guru tells me we are going to be using bonded internet to get some (as yet to be determined) multiple of 100 MBits/sec from the camera site and will be relying on the camera buffering to smooth the load.
But it could mean App#1 is simultaneously digesting 20 x 6MByte = 120MBytes of data - will this hit any walls?
App#2 is a processor - it takes files from the buffer area and FIFO processes them (moves them to AWS S3 buckets, creates thumbnails, determine watermark locations etc).
Using the new Wait For functionality each instance can handle a user defined number of files simultaneously.
During processing each file is converted to a bitmap - so a memory requirement of at least 6megapixel x 4 bytes/pixel = 24MBytes per file is required at some point in processing.
If 20 files were being processed simultaneously this suggests a possible peak memory requirement of 480MBytes per app instance - will this hit any walls?
App#2 has been written so that it can tolerate multiple instances of itself running in parallel, "feeding" on the common buffer area.
=========================================
We are getting close to the start of the implementation of this and I would dearly love any useful suggestions, war stories etc to give me forewarning of any possible obstacles - be it B4J, java, Windows 10, AWS EC2, AWS bandwidth etc.
Thanks in anticipation...
I have 2 B4J apps that run in parallel in AWS EC2 instance/s (essentially virtual PC/s running Windows 10).
App#1 is basically just an FTP server based on:
https://www.b4x.com/android/forum/t...plemented-with-socket-and-asyncstreams.74320/
with some minor mods, that accepts 4-6MByte jpgs from remote 6megapixel IP cameras and drops them in a buffer area on the AWS EC2 instance disk.
Going over this app it appears to be quite open ended (for want of a better term) - there do not appear to be any obvious explicit limits.
The IP cameras are pretty high tech with all sorts of internal buffering capabilities etc.
This app could be serving 16-20 IP cameras simultaneously each running 0.5-1 frames/sec at peak - a theoretical absolute peak load of about 1,200 MBits/sec. Generally all cameras will not be at peak output at the same time and I'm currently guessing a real peak of no more than 300-600 MBits/sec.
The networking guru tells me we are going to be using bonded internet to get some (as yet to be determined) multiple of 100 MBits/sec from the camera site and will be relying on the camera buffering to smooth the load.
But it could mean App#1 is simultaneously digesting 20 x 6MByte = 120MBytes of data - will this hit any walls?
App#2 is a processor - it takes files from the buffer area and FIFO processes them (moves them to AWS S3 buckets, creates thumbnails, determine watermark locations etc).
Using the new Wait For functionality each instance can handle a user defined number of files simultaneously.
During processing each file is converted to a bitmap - so a memory requirement of at least 6megapixel x 4 bytes/pixel = 24MBytes per file is required at some point in processing.
If 20 files were being processed simultaneously this suggests a possible peak memory requirement of 480MBytes per app instance - will this hit any walls?
App#2 has been written so that it can tolerate multiple instances of itself running in parallel, "feeding" on the common buffer area.
=========================================
We are getting close to the start of the implementation of this and I would dearly love any useful suggestions, war stories etc to give me forewarning of any possible obstacles - be it B4J, java, Windows 10, AWS EC2, AWS bandwidth etc.
Thanks in anticipation...