1. A method for collecting application performance data, comprising: instrumenting pre-determined functions of a server-side application on a server to obtain instrumented function operation data, wherein the server-side application comprises a thread; maintaining an instrumented function call stack for each thread separate and distinct from a call stack provided by the application runtime environment; identifying threads of the application which are executing server requests based on emptiness of thread stacks of the instrumented selected functions; sampling the threads actively executing server requests with a non-empty instrumented function call stack to obtain sampled function operation data; and combining the instrumented function operation data and the sampled function operation data to form a unified application performance report.