Perhaps a while back, you noticed your application really starting to slow down so you invested some time in really tuning things. You’ve enabled compression on all HTTP traffic, set content-expiration headers on all static content so they’re not being repeatedly retrieved from your server which improves page load time, made sure all your database queries are optimized, and you’re caching as much “read-mostly” data as you can. While there still other avenues to possibly be explored, you’re probably well on your way to having a fairly well-optimized website or application. One obvious solution if you’re using a dedicated server is to begin to look at adding more hardware to the mix but that can add additional complexity and cost to your deployment. Before you upgrade your hardware, its important to take a look at your individual server and make sure that you’ve maximized its performance.
Because Disk I/O is one of the real killers in terms of server load and website performance, is it possible that the hard drives themselves being used are not optimal. Work with your hosting provider to ensure that you have excellent RPM speeds on your disk drives, as this alone can make a difference on applications that do heavy amounts of database transactions. Switching from 7,200RPM SATA drives to enterprise grade 15,000RPM SAS drives can make a world of difference in this case.
Additionally, regular maintenance should be done to ensure that all of the disks being used are defragmented, regardless of your operating system. On the operating itself (Linux or Windows), make sure that there are no non-essential background processes or services running that provide no value yet consume valuable resources. If there are services such as a virus scanner that you are required to run, be sure that they are scheduled to not run on the server during peak hours – I’ve debugged more than one performance problem only to find that a full antivirus scan was being performed at 8 AM each day – just when all users began to log in and use the site.
For network I/O between servers, be sure that your network access settings are configured properly and that you are receiving optimal bandwidth between them. Network card mis-configurations can cause repetitive retries and wait states, which will affect performance. If you do some monitoring of your network traffic and find out that you are maxed out on your 100 mbps card, it may be time to upgrade to a 1gbps infrastructure. Finally, on the web server itself, servers such as Microsoft IIS support the deployment of “web gardens” which are essentially individual web servers clustered on a single machine. This can improve memory utilization for a single app by distributing it across multiple nodes, which can improve relative server performance.
If your web server is hosted by a managed hosting provider, you should reach out to their support team and ask for their assistance. Aside from assisting with some of these checks, they can also check your RAM and CPU utilization, to make sure your server is ‘right sized’.
Bookmarks