[Original blog post by Perry Clark - 2/14/2018]
One of the questions I am asked the most has to be: "What are the minimum specs for running xTuple ERP?" Personally, I am not a minimum spec person. My wife will attest to that! I like to think I'm a 'you get what you pay for and get what you deserve' kind of guy, but, really... if you're trying to run your business on the zero-to-cheap plan, then it's all just luck.
I prefer maximum specs: What has the most horsepower? Lowest 0-60 time? Lowest ET in the 1/4 mile?
With my 'more is more' philosophy in mind, allow me to answer a few relevant specification questions.
What are the minimum server specs for running xTuple?
That's sort of like asking "How slow can I go on the freeway [and not get rear-ended] without using my hazard lights?"
xTuple ERP runs on the open source PostgreSQL database. As a general rule, xTuple ERP supports multiple versions of PostgreSQL. However, there are some limitations, and it's important to make sure your PostgreSQL and xTuple ERP versions are in sync. So, minimum specs would probably be whatever PostgreSQL 9.3 supports, as per our Compatibility Matrix.
If you're going to ask, this is the more applicable question:
What are some 'reasonable' server specs for running xTuple?
Glad you asked! While every environment has its own nuances, here are some general rules of thumb in order of importance.
- Operating System (OS) — For your ERP Database Server, I prefer a Linux OS. Ubuntu 16.04 is mostly what we are deploying these days and is what we support and recommend most. We have customers on RedHat variants (CentOS/Fedora) and Windows and OSX as well. It may be a little more work to configure the dependencies for PostgreSQL with PLV8 on these other systems. See our instructions on installing PLV8 for all currently supported OS's and versions of PostgreSQL on the xTuple GitHub wiki. (GitHub login required.)
- Memory (RAM) — A reasonable amount is two (2) times the size of your database. If your database is 2GB, make sure you have at least 2GB of RAM for PostgreSQL and at least another 2GB for whatever else you might be running. However, if the machine is a production database server, then you should only run one instance of PostgreSQL on it. As a rule, more physical RAM is better.
- Storage (DISK) — The bottleneck in most systems are going to be diskbound. Read/write operations due to limitations of the spinning disks can greatly affect performance when the system encounters a sustained load. There are all sorts of fancy solid state storage devices these days — and they're very fast and very pricey. In a database server, it's preferable to have multiple disk spindles over one superfast solid state disk. If you have the budget, you can go for multiple solid state disks RAIDED together, but for most small- to mid-sized businesses, I recommend six disks. The break down is two disks for the OS in a mirrored configuration and four disks where the PostgreSQL data is stored in a RAID 10 configuration. Any RAID is better than none, so even a system with 4 disks in a RAID 10 for running everything is good. If you are considering a RAID, you'll want a hardware-based RAID controller. These are usually cards that plug in to the motherboard, and sometimes they are integrated. The HP Smart Array P Series cards are good examples of what to get. The key point is to make sure that the OS you are using will recognize the RAID controller. Having the best disk subsystem in the world is still no substitute for reliable backup and restore procedures.
- Processor (CPU) — Most any server class hardware is going to have a perfectly capable CPU with multiple cores. See: How does PostgreSQL use CPU resources? Everything else is likely fine, and you don't really have much choice when selecting server class hardware. Of course, if you want to get out of the maintaining servers business, you could sign up for xTuple Cloud service.
What server would I recommend? How much should my server cost?
We've had good luck with Hewlett-Packard Enterprise products. The HPE ML and DL series that are deployed at customer sites are my go-to solution. I cannot speak much to Dell servers — we do have some in-house, and they are fine. There are also a few customers running Apple macOS mini servers in production. My guesstimate is a cost of $3500* for a reasonable real server class machine with the things I recommend above. You can price check around, of course. I recommend it!
*Setup not included.
Of course the easiest way to get an xTuple ERP Server is to sign up for our xTuple Cloud service, and we'll take care of everything. If you've been running your own servers and want to upgrade, you should really think about migrating your database(s) to the cloud. Save yourself in-house IT headaches. We can even set up a free trial of your database running in the cloud to see if it will work for your locations. Check out xTuple Cloud Hosting.