我有一個Django應用程序,它的工作原理,並響應相當不錯的低負荷,但在高負荷像100用戶/秒,消耗100%的CPU,然後由於缺乏CPU速度變慢。
問題:
- 分析應用程序給我的功能所花的時間。
- 這次在高負荷時增加。
- 耗時可能是由於計算複雜或等待CPU。
那麼,如何找到一段代碼所消耗的CPU週期呢?
因爲減少CPU消耗會增加響應時間。
- 我可能已經寫了非常高效的代碼,並需要增加更多的CPU功率
OR
- 我可能有一些愚蠢的代碼服用CPU並導致慢下來?
任何幫助表示讚賞!
更新:
- 我使用的JMeter來分析我的web應用程序,它給了我一個吞吐量2個請求/秒。 [100位用戶]
- 我的平均時間爲100秒,而在1秒的請求時間爲1.25秒。
更多信息
- 配置的Nginx + Uwsgi有4名工人
- 沒有使用數據庫,使用從REST API
- 在1日迴應命中REST API的響應被緩存,因此沒有區別。
- 使用
ujson
進行json解析。
好奇地想知道:
- Python的Django是使用這麼大的網站那麼多的單位,則必須有一些高端的調試/內存CPU的分析工具。
- 我發現的所有這些都是執行性能分析的代碼片段。
我在剖析中的第一步是查看*大部分時間花費哪些函數,並且調查爲什麼,如果合理,以及如何/如何減少。時間(經常)的*量*與時間的*比例量*不重要。 – 2012-06-04 06:19:35
所有的時間似乎分佈在整個應用程序。沒有具體的問題似乎是一個問題領域。 –
好像?你確切的測量結果?請參閱http://stackoverflow.com/a/582337/851737尋求幫助。 – schlamar