在我的一個觀點中,我遇到了問題,進入這個 url 會使 CPU 使用率 100% 持續 5-10 分鐘。這意味著在接下來的 5-10 分鐘內,我的網頁無用。我敢打賭,這是因為我試圖發送多少數據庫查詢。給我帶來麻煩的 Views.py:def guild_details(request, guild_name): fixed_guild_name = urllib.parse.unquote(guild_name) players = Player.objects.filter(guild=fixed_guild_name) last_month = datetime.today() - timedelta(days=30) deaths = reduce(QuerySetSequence, [Deaths.objects.filter(killed=player, date__gte=last_month) for player in players]) kills = reduce(QuerySetSequence, [Deaths.objects.filter(killer=player, date__gte=last_month) for player in players]) return render(request, 'guild.html', {'players': players, 'deaths': deaths.order_by('-date'), 'kills': kills.order_by('-date'), 'guild_name': guild_name})看起來還不錯,但請考慮:數據庫包括超過 6000 多個“玩家”。(和上升)數據庫包括超過 26000 多個“死亡”。(和上升)起初,我正在考慮為這個網頁做緩存,但它的死亡/殺死可能每 30 分鐘左右改變一次,所以我認為這不會有多大幫助 - 考慮到我第一次訪問這個頁面時遇到問題,如果玩家數量很高(10+)。如果玩家人數很少,我可以輕松訪問此頁面。另外,我正在同一臺服務器上運行 redis / celery 并進行報廢。有什么我可以優化的東西嗎?或者我應該只是簡單地將更多的 CPU 放入其中?我的“頂部”命令: last pid: 69974; load averages: 4.28, 4.78, 5.49 up 2+11:16:22 12:40:4614 processes: 5 running, 9 sleepingCPU: 33.1% user, 1.4% nice, 6.0% system, 0.0% interrupt, 59.4% idleMem: 8965M Active, 30G Inact, 112K Laundry, 82G Wired, 3594M FreeARC: 64G Total, 41G MFU, 19G MRU, 17M Anon, 857M Header, 2934M Other 55G Compressed, 97G Uncompressed, 1.76:1 RatioSwap:前 3 個是passenger_wsgi,它打開manage.py。
添加回答
舉報
0/150
提交
取消