Django、DRF、nginx、Jmeter:即使 CPU 没有负载等,采样时间也会变大
Posted
技术标签:
【中文标题】Django、DRF、nginx、Jmeter:即使 CPU 没有负载等,采样时间也会变大【英文标题】:Django, DRF, nginx, Jmeter: Sample Time becomes large even though there is no load on the CPU, etc 【发布时间】:2022-01-16 21:23:31 【问题描述】:我正在使用Jmeter
对DRF
进行负载测试,即使CPU和内存不是100%,吞吐量和响应时间也很慢。
Django
+ nginx
和 Postgres
服务器是分开的,两者都有以下规格
4CPU,4GB 内存。
nginx 正在使用 docker 的https-portal
如下所示。
version: "3"
services:
https-portal:
image: steveltn/https-portal:1
ports:
- "80:80"
- "443:443"
environment:
DOMAINS: "my.domain.com -> http://backend:8000"
STAGE: "production"
volumes:
- https-portal-data:/var/lib/https-portal
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./static:/static
depends_on:
- backend
restart: always
backend:
build: .
command: uwsgi --http :8000 --module myapp.wsgi --processes 4
volumes:
- .:/usr/src/app
- ./static:/usr/src/app/static
expose:
- 8000
env_file:
- .env
- .env.prod
restart: always
volumes:
https-portal-data:
查看 django 日志,django 似乎没有任何问题,您认为可能是什么原因造成的?
generated 8302 bytes in 29 msecs (HTTP/1.0 200) 7 headers in 208 bytes (1 switches on core 0)
设置 Jmeter:
Django + nginx 服务器:
数据库(postgres)服务器:
连续加载 5 分钟后。
如果您需要任何其他信息,请告诉我。
【问题讨论】:
【参考方案1】:-
通过profiler tool检查您的应用程序性能
根据结果,您可能还想check Postgresql query logs and stats
Don't run JMeter in GUI mode,您可能会得到假阴性结果,因为 JMeter 无法足够快地发送请求和/或由于垃圾收集而卡住
关注其他 JMeter Best Practices 并确保 JMeter 不缺少 CPU、RAM 等。
【讨论】:
谢谢。我检查了一切,情况并没有改善。nginx
可能是原因吗?以上是关于Django、DRF、nginx、Jmeter:即使 CPU 没有负载等,采样时间也会变大的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Elastic Beanstalk 上使用 Nginx、React、Webpack、Gunicorn、PostgreSQL、Django 和 DRF 部署应用程序?如何使用此应用程序处