Given the dynamic nature of the cloud, resulting from mapping virtual to physical resources, changes in the usage pattern of resources, migration of virtual resources and the dynamic nature of the applications themselves, the bottleneck resource in a given application changes over time. Promptly identifying the bottleneck of cloud application and consequently taking corrective actions (e.g. admission control) are essential requirements for cloud application performance management. The traditional threshold based bottleneck detection technology, which adopts a pre-defined target performance measure (e.g. response time, CPU utilization, etc.), requires a good understanding of the application. It is difficult to identify which performance measures need to be monitored and how to set accurate threshold values for them. The commonly used technique of model-based workload management also faces a big challenge in modeling the highly dynamic, cloud application behavior. In this paper, we propose a self-optimizing application workload management solution for cloud applications which adapts well to the cloud dynamics. It utilizes a target-less bottleneck detection mechanism, without the need to define target thresholds. It also contains a model-free controller for workload management, thus avoiding the complexity of dynamically changing the model as the cloud environment changes. We believe that this is the first time such a design principle to cloud application performance management is introduced. The validity and efficiency of this solution have been verified by a real-case study on an IBM cloud platform, using the RUBiS web application benchmark. © 2013 IEEE.