Your team has released a brand new app and it’s flooded with new users. It’s trending on Twitter plus it’s on the front pages of both Reddit and Hacker News. All of a sudden, you’re seeing support tickets mentioning slow response times then, worse, the complete inability to access the application. Has this situation happened to you?
Every physical server has limits that, when reached, can cause issues for currently-running software as well as for users accessing the machine. Proactive planning plus quick, educated responses to unexpected issues are essential to keeping your applications running 24/7. In this article, you’ll learn why your server infrastructure might have reached it’s limits, and go over solutions to prevent future issues.
With proactive planning during development and testing, you would have been ready for this eventual scenario and prevented it. You would have the knowledge and ability to quickly make adjustments or increase resources to get your app back online. On the other hand, if you aren’t prepared to fix show-stopping issues like this one, read on.
Minimum Requirements and Recommendations
In a previous article, we covered the components that make up a server and their specific functions. Every server has a set of components that define the abilities of the server; they’re often configurable to improve a specific function of the server.
Replacing the CPU provides more horsepower for intricate computations. Adding more memory allows the server to run more processes simultaneously. Larger storage drives means holding onto more data. While they are individually customizable, it’s important to remember that each of these components cannot function independently without the others in the system. Minimum requirements and recommendations tell us more about how the act together.
Computer software often includes a set of minimum requirements and minimum recommendations. Minimum requirements define the bare minimum set of components required to run a specific software application—see video games for a simple example. A computer game likely won’t run well if your system doesn’t meet the minimum requirements.
If your server has multiple software applications installed, it’s important to meet or exceed the minimum requirements of the most resource-intensive software to be sure your server can at least run each application independently. Minimum requirements are just a baseline, though. Any server running in a production environment should meet or exceed the minimum recommendations, a higher set of guidelines that can meet greater server loads when necessary.
It’s even more important to pay attention to the combined requirements for every software application you plan to run on your server. While you could meet every minimum requirement and run software independently of each other, your server will likely run out of resources if you try to run every application at the same time when each requires at least 4GB of RAM and you only have 4GB of total RAM in the server.
Adjusting individual resources like RAM can allow you to specialize your server for specific requirements. When configuring a server, your budget and expected server load are of high priority. It can be beneficial to start small and test early and often to discover potential hardware limits for your software. The following chart provides a comparison for different potential Mac server uses.
As your minimum software requirements increase, you’ll need to adjust your server hardware to compensate. You may run into an issue where the i7 Mac mini meets 9/10 of your requirements but the 10th requirement is a show-stopper. Your application might depend on more ram than the Mac mini currently supports so you’ll have to move up to either an Xserve, Mac Pro, or private cloud.
With growth comes growing pains. More users might mean more compute power or higher memory usage. If you’re not regularly monitoring these levels, you might find yourself reacting to a hardware situation that could soon turn sour.
Before your server experiences issues, it’s important to be sure logging and monitoring software is setup. Why wait for a problem to happen when you can prevent it from ever happening with a bit of proactive planning? On a typical Linux/UNIX server, using a job scheduler (like Cron) or system monitoring tool, you can automatically track actions and events between software and/or hardware then receive alerts before issues become critical.
An abundance of third-party closed- and open-source monitoring software applications are available for proactively managing Mac servers. The OS X server app offers simple tools for managing a server.
It’s also important to be sure your network is in the best possible health. Here at MacStadium, for example, we utilize Arbor® Networks Peakflow TMS to detect threats and remove DoS & DDoS traffic from our network to provide a stable, reliable network for all of our customer servers at no cost. We also provide a network monitoring solution in your customer dashboard to manage and predict network issues before they get out of hand.
When a potential server limit is reached, it’s important to analyze the data and figure out what went wrong. Did your system crash because you ran out of RAM? Did your users experience delays and crashes because the network couldn’t handle so many simultaneous connections?
With real facts, you can analyze and make smart decisions about the future of your infrastructure. When you or your users experience a slow transfer speeds to/from your server, you should consider moving to the highest hosting plan available to get a larger, faster pipe for your data to flow through.
Processing power, memory, storage, networking, and I/O are fundamental pieces of every server. When usage is unmonitored and growth is left unchecked, you can limit the potential of your application in the near future by finding yourself reacting to server issues rather than being proactive at the start of the project. Configuring your server is not a difficult task. Researching your potential use case and project scope beforehand can allow you to proactively design the infrastructure and software environment to factor for quick growth when your project becomes a hit.
Reach out to one of our engineers in LiveChat or a support ticket if you have questions or concerns about the future limitations that may exist on your current server. If you’re just getting started, our staff would love to work with you to develop the best solution for you and your users moving forward.