A web server can become overloaded due to high legitimate web traffic, denial of service attacks, computer worms causing abnormal traffic, viruses infecting browsers and servers, unfiltered internet bots, network slowdowns, and partial server failures. Symptoms of overload include requests being served slowly, HTTP error codes being returned, TCP connections being refused or reset, and in rare cases only partial content being returned. To prevent overload, sites use techniques like managing network traffic with firewalls and traffic shaping, deploying web caches, using multiple domain names and servers to separate content types, load balancing across multiple servers, and optimizing server software.