【发布时间】:2021-01-26 17:45:07
【问题描述】:
我试图了解持久连接如何提高性能,尤其是在我的应用程序读取量很大的情况下。所以,我有 100000 行的记录,并且我已经索引了用户名字段。所以,我创建了一个端点,我可以在其中使用用户名进行查询,它给了我温度。这仅用于测试目的。因此,我编写了另一个脚本,该脚本具有创建一个运行 1000 次的循环并向端点发出请求的函数。我正在记录请求-响应时间并将其保存在列表中,然后计算完成 1000 个请求所需的总时间。首先,我尝试使用没有持久连接的默认 Django 数据库设置,每次我对时间进行基准测试,它记录了所有 1000 个请求的大约 43 秒。接下来,我添加了 CONN_MAX_AGE=60 并多次运行脚本,发现时间每次都增加到 103 秒。现在,如果我没记错的话,持久连接应该减少了总时间,但由于某种原因,它比每次请求响应完成时打开和关闭的正常连接要高得多。我的问题是为什么会这样? 脚本.py
import requests
import random
import time
def make_request():
username = ['00b076300079144ca0667c341aeac046','remy','surajit','remy11']
t = []
for i in range(1000):
response = requests.get('http://127.0.0.1:8082/temperature/t/{}/'.format(random.choice(username)))
t.append(response.elapsed.total_seconds())
print(random.choice(username),response.status_code,response.elapsed.total_seconds())
print('total time',sum(t))
make_request()
DetailView 端点
class TempratureDetailView(DetailView):
model = Temperature
template_name = 'temperature/t_detail.html'
def get_object(self, queryset=None):
return Temperature.objects.get(username=self.kwargs.get('username'))
models.py
class Temperature(models.Model):
username = models.TextField(db_index=True,primary_key=True)
temperature = models.IntegerField(blank=True, null=True)
class Meta:
db_table = 'temperature'
持久性数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
'CONN_MAX_AGE': 600, #10 minutes
}
}
【问题讨论】:
-
您是在开发服务器还是在生产服务器上进行这些测试的?
-
@AbdulAzizBarkat- 这是在我的本地开发服务器上
标签: python django postgresql