I have X GB traffic/bandwidth, and have not used all, why is my site creating load and being asked to upgrade?

Server load and bandwidth are two entirely different things. Server load refers to the amount of time the server needs to run in order to process a request. The more concurrent requests that the server receives, the higher the load. Bandwidth refers to the amount of data that is sent over the network after the request is processed.

In the case of a php/MySQL web application e.g. forum or portal, the server receives a request for a URL. It finds the file that maps to the URL and sees that it is a executable file (PHP script, etc.) so it determines what it needs to use to execute the file, executes it (which probably includes connecting to the database and executing several queries), collects the output and then sends this to the requester. All of this work contributes to the server’s load. The output (which is usually relatively small unless there are large graphics or multimedia content on the page) contributes to bandwidth usage when it is actually sent.

In contrast, a simple HTML page or a movie download creates almost no server load because all the server has to do is open the file and send its contents down the pipe.

When you are asked to upgrade to higher plan, it means your scripts are utilizing more than normal CPU and memory of the server, and causing the server load to go high, which in turn causes all sites hosted on that server to slow down. The main reason could be number of requests to your site or it could be a rogue script or code that needs fine tuning by its developer.

When you upgrade to a higher plan (for example from shared account to semi-dedicated), you will be getting more CPU and memory available to your account because semi-dedicated server hosts less accounts as compared to shared server.