In this talk, I will discuss techniques that can be employed by Internet data centers to reduce outages due to dynamic workload variations and flash crowds. Such data centers will need to employ (i) workload monitoring techniques to predict future workloads and identify workload spikes, and (ii) dynamic resource management techniques to quickly react to workload increases by allocating additional capacity (servers) to overloaded applications. The design of such techniques is complicated by the multi-tiered nature of Internet applications. I will present some recent techniques that we have developed for workload prediction and dynamic capacity provisioning in data centers running multi-tiered Internet applications. I will describe our implementation of a prototype data center in Linux and present results of our experimental evaluation.