在我的一個(gè)觀點(diǎn)中,我遇到了問題,進(jìn)入這個(gè) url 會使 CPU 使用率 100% 持續(xù) 5-10 分鐘。這意味著在接下來的 5-10 分鐘內(nèi),我的網(wǎng)頁無用。我敢打賭,這是因?yàn)槲以噲D發(fā)送多少數(shù)據(jù)庫查詢。給我?guī)砺闊┑?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})看起來還不錯(cuò),但請考慮:數(shù)據(jù)庫包括超過 6000 多個(gè)“玩家”。(和上升)數(shù)據(jù)庫包括超過 26000 多個(gè)“死亡”。(和上升)起初,我正在考慮為這個(gè)網(wǎng)頁做緩存,但它的死亡/殺死可能每 30 分鐘左右改變一次,所以我認(rèn)為這不會有多大幫助 - 考慮到我第一次訪問這個(gè)頁面時(shí)遇到問題,如果玩家數(shù)量很高(10+)。如果玩家人數(shù)很少,我可以輕松訪問此頁面。另外,我正在同一臺服務(wù)器上運(yùn)行 redis / celery 并進(jìn)行報(bào)廢。有什么我可以優(yōu)化的東西嗎?或者我應(yīng)該只是簡單地將更多的 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 個(gè)是passenger_wsgi,它打開manage.py。
添加回答
舉報(bào)
0/150
提交
取消