JamfPro Server Recommendation

Contributor III

We are planning to migrate our current JSS running on macOS/Mac Mini to vSphere. We would like to get a recommendation on what type of OS to use. Windows Server 2012 R2 or Ubuntu Server 16.04. How much resources to use for 4000 clients. Performance tuning of Tomcat and MySQL. I tried Windows Server 2012 R2 with the same resources and performance tuning as our Mac Mini, but I noticed the JSS loads faster on Mac Mini than the Windows Server.

2 Cores / 16 Gigs Ram
MySQL - Max Packet Size 16 MB / Max Database Connections 151
Tomcat - Min Memory = 256 MB / Max Memory = 4 Gigs / Min/Max PermGen Size = 256 MB / Thread Pool Count = 500


Honored Contributor

Here are my thoughts, which should be noted are my opinions based upon my experience with both jamf products and of course just tech in general.

1 - when choosing a server platform you should choose what makes the most sense for your Org. If your Org is classically a Windows shop it may not make a ton of sense to use Linux for example. Unless Linux is something you are trying to break into then maybe it would make sense to start trying to put Linux in your infrastructure. You should choose a platform both you and your Org is comfortable with. There may be times where you may need to work with other teams or need help from another team, and if they are not familiar with your platform it could make it more difficult.

2 - When it comes to scaling there are really no magic numbers. An Org with 100 devices can chew up more resources than an Org with 10,000 devices if that 100 device Org uses really aggressive workflows. A lot of how you scale depends on what you are trying to accomplish. Some random examples might be your work in a high compliance Org, which requires you to check compliance every so often on a daily basis of said devices. You are going to have to design workflows to meet those needs with out beating up your infrastructure. You should always try to figure out what your end goals are before you start building things. This will help sometimes to keep workflows more light weight.

3 - How do you quantify and qualify your needs for point 2? You need to collect data. There are so many monitoring and metrics solutions out there to do so. How do you even know your Tomcat needs more RAM? Well, are you monitoring that server? What changes happened recently that might have caused Tomcat to eat up more heap memory? While number of clients connecting to the server is totally a factor for scaling it isn't the only factor. You should try to collect data on everything you can to get a more clear picture of how you scale out. Things like this allow you to more proactively scale out your infrastructure. If you aren't monitoring your infrastructure you are just asking for a day when it goes bad and you have to basically go all hands on deck and work long hours to fix something you could have mitigated just by having monitoring setup.

Basically you can start out with some recommendations from the community or the vendor and go from there. I do strongly suggest you setup some sort monitoring system to collect data on your infrastructure, because ultimately you are going to know how to scale your environment much better than anyone else. This isn't exclusive to jamf either really. This practice is pretty broad and general (my opinion) and should be applied to any production system or application.

On a side note Jamf does offer a infrastructure course called the CJA which sort of goes over Linux and Windows and some basic setup and configuration of the two. It doesn't quite cover monitoring and metrics since there are probably 100s of tools that do that out there, but it can give you some basic ideas on how to build and scale out an infrastructure.

Contributor III

Thanks Tom! The numbers are given to us by our jamf buddy upon checking our jss logs and based on the number of users we have. We are a School District with 7 remote sites. We do not have teams. WE ARE IT, 7 guys handling 4000 users. We are the windows/mac/network guys. That's why I am thankful for guys like you and JamfNation in general for helping us out. (I remember talking to you outside Varsity Theater during JNUC 2015 Party, I'm the guy from Alaska).

Edit: The numbers were from 2 years ago, we increased in size a little bit since then. I'll call our jamf buddy to reassess our needs. I reached out just to see if there are other admins out there that can share their performance tuning.

Valued Contributor III

Giving some thoughts as well. @tlarkin did pretty well with his recommendations...here's mine

  1. I agree what he said on platform choice. JAMF goes out of their way to make various hosting platforms mix and match well. Our shop is mostly run by Windows Servers and Linux is mostly alien to our Windows guys.

It's made a bit more work for me having to learn a bit of PowerShell, but what platform the server is actually hosted on isn't what's most important to me...it's how well the server runs. Windows 2012 R2 has done well running our cluster. My only issue is that I do a manual install for my cluster which means having to learn some PowerShell to get everything I want backed up and back where it needs to be after an upgrade. Make sure to consider that point....so I'm guessing you are familiar with both platforms and can get them up and running, but if you are having to tap into the actual servers themselves, make sure you are comfortable using the tools for that platform.

  1. magic numbers....they will teach you a formula in the CJA class to consider using when scaling. After talking to various different teams at JAMF, it is all seems to be theory and client experience-based conjecture really. The formula is not hard and fast seemingly. One group told me to stick to the formula taught in CJA class, another said to accept the defaults (even on a multi-member, manually-installed cluster, another group told me to consider shrinking the pool size even more. One broad-based conclusion I have been able to draw from JAMF is that Tomcat seems to do better with CONSECUTIVE connections rather than concurrent in most situations. (That means smaller pool sizes, fewer threads in general.)

  2. Site Monitoring is the ultimate answer. Basically, what we have done is to listen to everyone at JAMF, arrive at what made sense to us in terms of tuning and continuously monitor. Perhaps your VMWare doesn't handle MySQL well...ours didn't until we changed things up last summer. In that case, perhaps a physical box is best. Perhaps you chose the wrong NIC type in VMWare, we found that and changed it in response to direct events. Perhaps you need more than one Tomcat instance with load balancing? Perhaps you want a dedicated admin console that clients aren't hitting to do your work on?

There isn't a magic answer, but I will plug the CJA class. They cover in depth all the methods of scaling, ways to calculate load and evaluate usage, etc. The classes are taught by guys whose job it was/is to keep high availability JSS's running.

If it helps you, we have 5000 iPads and 450 Macs here in our school district. Due to a major crash (due to overloading) of our server almost 2 years ago, we got things back up, kept em going for a month or two and re-architected the server into a 5 member cluster...one VM with an admin console and MySQL on it, 3 load balanced Tomcat instances and 1 purpose driven Tomcat instance to dedicate to Cisco ISE. Our numbers have held up fairly well since then and the use of these VMs isn't costing much because we had retired some VMs previously that I was able to re-use. We run it on Windows, but having a strong OS X background a part of me wishes I had Linux. I went with Windows to make life easier for our other system administrators.