We terminate SSL at our load balancer, but even if you're not doing something like that SSL shouldn't have that much of an impact.
Canvas has never been particularly memory-bound for us; most of our VMs are 4-core, 6GB machines with lots of free RAM. Where things seem to get bogged down for us is CPU; we've seen times where every machine in our cluster (8 VMs serving the web domain traffic; there's a bunch more for the files domain and delayed jobs) will peg out at 80%+ CPU for sustained periods. We ended up narrowing that down to a specific account that was enrolled in many thousands of courses (most of them inactive courses imported from our old WebCT installation). Whenever that account tried to log in (and it usually couldn't), Canvas would go nuts and become unresponsive.
That's not to say that you're having the exact same issue; it's just to say that performance problems are often difficult to track down. We only found the cause of that one by looking through the logs, running strace on the ruby processes to see what they were actually doing, noticing that there was a huge amount of traffic back and forth between the app server and our redis cluster (transferring tens of megabytes of cached data per request for this account) and seeing a common user ID in the requests.
If you can give some more information on your setup we might be able to help more. A couple of questions for you:
- You said "we are currently running on a 8GB VM with 5GB free". Are you running on a single VM? Is that VM also handling redis, database and delayed jobs, or are those on their own machines? If you're only running one server, come to my Instructurecon talk on scaling open-source Canvas ;)
- How many active users, courses, etc do you have? Any idea as to your numbers of concurrent users (we use Google Analytics to get a rough idea for the latter).
And a question for the Instructurefolk -- I asked on IRC a week or so ago but only got crickets: do you use anything like New Relic to instrument your production servers? Like I said, we only tracked down the root cause of our "account with too many courses" problem by one of our very experienced systems guys running strace on individual ruby threads and being able to actually interpret the strace output.
--
Graham Ballantyne
IT Services
Simon Fraser University