Performance in web servers is a complex topic with many factors that could shape real-world performance. Web servers are similar to mainframes of early computing – they serve as the backend and process the input given by the client, as then return the updated information. The client (the web browser) simply receives the data and renders it. What this means is that for most servers, their tasks are mostly IO-bound and parallel / multithreaded. For example, Apache creates a new thread for every HTTP request, making delivering web pages an embarrassing parallel problem.
IO-bound performance problems are usually either from the storage or database being too slow, or from the server not having enough network bandwidth. As a typical webpage can involves dozens of SQL queries, a lot of the time is spent waiting for a (no)SQL server to respond. Solid state drives are an easy plug-and-watch way to improve performance, but they shouldn’t be considered a magic bullet – there are many different types of SSDs, and each comes with advantages and disadvantages, and not all tasks are well suited for SSDs.
One option is to replace the hard drive with a SSD. They are easy to install, and can be a quick solution for IO-bound performance issues. It can be installed on just about any server without much fuss, but the SSD is bound by bandwidth limits of SAS or SATA. Meanwhile, PCI-e SSDs connect directly via the high speed PCI-e bus and should be good for heavily disk-intensive workloads. Some PCI-e based SSDs have a disadvantage of that they cannot be directly booted from, which means the server will need a separate drive for booting. You may also need to check for compatibility between existing motherboards, OS, and any PCI-e SSD you select.
One of the biggest disadvantages of SSDs compared to other mediums is that they have a limited amount of write cycles available. As the server data should be designed to reliably handle drive failures and provide redundancy, this problem mostly amounts to cost, and how long it takes before a SSD needs to be replaced. There’s 3 different ways the cells in a NAND block are built – single level cell (SLC), multi level cell (MLC) and enterprise MLC (eMLC). In SLC flash, each cell only stores one bit of information and this provides the longest reliability and performance.
MLC flash instead stores multiple bits of data per cell. Rather than having a binary state of 0 or 1, for each MLC cell the data is determined by how much charge is in it. This also means that it’s less reliable than SLC-based SSDs as there is a greater chance for errors and data corruption to occur. Modern SSDs have built in error-correcting algorithms to improve the reliability, but it will never provide as many write cycles as SLC drives. The disadvantage of a true SLC solution (be aware that there are some drives that use MLC flash in SLC mode) is price; they are normally more expensive than MLC based solutions.
Enterprise MLCs are not a different paradigm – they are still MLCs, but the term usually means the manufacturer picks higher quality flash. Most eMLC drives also include extra, undisclosed blocks which are not exposed to the client but are rather ‘extra’ blocks. They are automatically used when the existing cells are reaching their limits, and this practice is called over provisioning. eMLC SSDs are a compromise between reliability of SLCs and the cost of MLCs, but for some situations a premium MLC drive featuring well-engineered controllers can do the job fine and save on the costs.
SSDs are not designed to be continuously written to. Most server tasks require lots of reads with less writes, which makes it ideal for SSDs. If the server’s workload involves constantly writing a stream of data, solid state drives are definitely out of the equation. But for other tasks, upgrading a server to SSD storage is a great way to improve performance, and there’s a wide variety of options and brands to choose from. When looking at which drive to deploy, it’s important to consider how important reliability is to the mission, if other redundancy systems like RAID are in place, a brand’s reputation for reliability, and the performance of the specific combinations of components used in individual drives.
Is Plextor M5 Pro SSD suitable for web server deployment?
The M5 Pro is a premium MLC SATA drive with a SATA 6Gb/s interface. The two core components are the latest Marvell 88SS9187 controller and high quality Japanese Toshiba Toggle NAND flash. It offers first tier SATA SSD performance, although it would be slower than many PCI-e SSDs. In reviews the Marvell controller has been show to work particularly well in RAID configurations.
In terms of brand reputation and drive reliability, Plextor claims the lowest average annual failure rate (AFR) across industry at 0.5 in 2011, and 2,400,000 hours mean time between failure (MTBF) for the actual drive. This is far higher than most MLC drives and well into the territory of high priced enterprise SSDs. These numbers are accounted for by the fact that Plextor combines strenuous burn-in tests for each drive with extensive development testing and strict quality control. Details of pre-manufacturing testing include a zero failure rate requirement across 400 drives for: a 48hr Sustained Read and Write Test, a 4000 Times Idle Test–Sleep and Hibernation Test, and a 250 Times Power Cycle–Cold and Warm Boot Test.
One significant feature as regards web server deployment is an element of the system Plextor call “True Protect” Plextor clearly understand the limitations of SSD technology and has taken steps to deal with the issue of data integrity. The first of these is implementing the 128-bit error correction found on the new version of Marvell’s controller, the second is an exclusive read technology called Robust Data Hold-out Algorithm. Also of note is the low power consumption – 0.25W according to MobileMark and a 5-year warranty.