Saturday, July 11, 2015

What is this I/O usage in cPanel? How can We reduce it?


I/O (input/output defined as KB/s) is just the "throughput" or speed of data transfer between the hard disk and the RAM. On a server, a disk I/O describes every process that involves writing to or reading from a storage device which on a shared web hosting server will be the hard disk drive, or HDD. I/O processes to an HDD are particularly slow when compared with solid-state memory such as RAM, HDD I/O is, on average, 2,000 times slower.

In a web hosting environment, a web server must support hundreds perhaps thousands of sites simultaneously while creating a well-balanced server environment. The more accounts your provider stuffs on the server, the more noticeable slow disk I/O becomes. While any decent web hosting will not place hard limits on most of the resources, there are some that need to be proactively regulated so that one individual or account do not consume everything.



Most Linux servers in today's shared hosting environment runs Apache web servers. And, most of these support CGI and FastCGI scripts - written in a number of languages, such as Perl, Python, and the most popular, PHP. A single site potentially can consume all CPU, IO, Memory resources or Apache processes and this may bring the server to a complete grinding halt.

These limits are designed or rather configured to make sure that no single web site can bring down the web server which will affect everyone else.

As you may have noticed, your website doesn't throw up any noticeable error (sometimes you may see 508 error; again that will depend on how the server is configured) when you exceed your i/o limit. What will happen is that it will the site start responding slower or just "hangs" unable to fulfill the request which typically (do bear in mind that there may be other reasons why this happens) is to transfer data from the hard disk to the RAM. Simply put, it is a limit that when you reach your assigned or subscribed limit, the processes are throttled (put to sleep).


Again, any decent hosting company will grant you what is termed as "soft limit" whereby if you exceeds it, your site will not hang but you will receive warning depending on the setup.

Then, there is the "hard limit" which when you exceed ... well, you hang.


In our own environment, we have an in-house systems that make sure that no matter what any customers does, it will never affect other customers on the machine. This control resources being used by all processes for any single account. This eliminates the noisy, bad neighbor effect, improve our server's stability, and give every webmaster on the server real bang for his/her bucks.

In fact, we have configured:

Soft Limit so that when customers exceed their resource allocations to accommodates web owners who temporarily exceed inode restrictions.

Hard Limit mode where it would be impossible to create new files and folders after these allocations have been used up.


What will happen is that when:

* a user hits max entry processes limits -- we display 508 Resource Limits Reached
* a user hits CPU limit -- site will be slow. This often causes surge in connections, hitting max entry processes and 508 error. The account consuming too many resources will temporarily stop working until their resource usage returns to normal. Meanwhile, the other tenants on the server will continue to run normally.


Since you already know the cause, you should either delete files you don't need or optimize your sites/account performance to ensure they doesn't hit your account resource limits anymore. You can also upgrade to a bigger package or to something more robust.

1 comment:

  1. My I/O usage is always at limit, how can I reduce it? What are the step-by-step process to do it? Can you help me about it?

    ReplyDelete