You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django网站性能测试时RPS过低的问题求助

Django网站性能测试时RPS过低的问题求助

各位大佬好,最近在给我的Django网站做性能测试的时候,发现RPS(每秒请求数)低得离谱,愁死我了!先给大家看看我目前用来做页面缓存的代码片段,本来想靠这个60分钟的页面缓存提升性能,但好像没达到预期:

import os
import time
from django.conf import settings
from django.core.cache import cache
from django.core.mail import send_mail
from django.contrib import messages
from django.http import FileResponse, Http404, HttpResponse
from django.shortcuts import render
from django.utils.translation import get_language, gettext as _

from apps.newProduct.models import Product, Variants, Category
from apps.vendor.models import Us
# 后续逻辑是尝试从缓存读取页面,未命中则渲染页面并存入缓存

我自己折腾了好一阵还是没摸到核心问题,想请教下大家可能的原因和解决方向:

  • 缓存后端是不是选错了? 我目前用的是Django默认缓存配置,会不会是用了LocMemCache?之前听人说这个缓存是单进程的,压力测试下根本起不到高效缓存的作用,是不是得换成Redis或者Memcached这种分布式缓存?
  • 缓存命中率是不是太低? 我设置的缓存键是不是不够合理?比如有没有结合当前语言、请求路径这些唯一标识?会不会每次请求的缓存键都不一样,导致根本没命中缓存,每次都要重新渲染页面?
  • 数据库查询拖了后腿? 就算有页面缓存,第一次渲染页面的时候,查询Product、Variants这些模型数据会不会有N+1查询的问题?比如我在视图里循环查每个Product的Variants,没用到select_related或者prefetch_related,导致数据库查询次数爆炸,第一次渲染就慢得要死,缓存生成也跟不上?
  • 静态资源没做分流? 测试的时候静态资源(CSS、JS、图片)是不是还在通过Django处理?是不是应该把这些静态资源交给Nginx或者专门的静态文件服务器托管,别让Django同时扛动态请求和静态资源的压力?
  • 服务器进程配置不合理? 我用Gunicorn部署的,worker数只设了2个,是不是太少了?是不是应该根据服务器的CPU核心数调整worker数(比如2*CPU核心+1),同时调整worker的线程数?
  • 视图逻辑有冗余? 我的视图里是不是写了很多没必要的逻辑?比如导入了一堆当前视图用不到的模块(比如send_mail、messages),或者有多余的计算、判断,拖慢了视图的处理速度?

另外我还想问问,有没有靠谱的排查方法?比如用Django Debug Toolbar能不能看到每个请求的缓存命中情况、数据库查询耗时?或者用压力测试工具的时候,先测一个纯静态的视图看看服务器的基准RPS,再对比我的业务视图,这样就能定位到底是业务逻辑的问题还是配置的问题?

麻烦各位大佬给点思路,实在是卡在这里好久了!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:18:09