gpt4 book ai didi

django - Django中的并发性能(apache2 prefork/mod_wsgi),我在做什么错?

转载 作者:行者123 更新时间:2023-12-04 13:45:22 26 4
gpt4 key购买 nike

首先,我对以Django为基础的网站的性能丝毫不满意,它的访问量并没有增加,到目前为止,每天的访问量超过1000。

我很好奇它如何应付繁忙的交通高峰,所以我使用了ab工具进行一些基准测试。

我注意到并发大于1时的性能提供了与1个并发连接相同的请求量。

请求数是否应该随并发性增加?

我在具有1 GB RAM,apache2(prefork),mod_wsgi,memcached和mysql的虚拟机上。
页面上的所有内容均已缓存,数据库未受到任何点击。而且,如果memcached会删除该条目,则只有2个轻量(索引)查询-应该立即重新缓存。

基准测试数据:(注意:我确实用2000和1万个请求进行了基准测试,结果相同)

对于起始页面,由django通过apache2/mod_wsgi提供:
-n100 -c4:http://dpaste.com/97999/(58.2请求/秒)
-n100 -c1:http://dpaste.com/97998/(57.7请求/秒)

对于robots.txt,直接从apache2:
-n100 -c4:http://dpaste.com/97992/(4917请求/秒)
-n100 -c1:http://dpaste.com/97991/(1412请求/秒)

这是我的Apache conf:http://dpaste.com/97995/

编辑:添加了更多信息

wsgi.conf:http://dpaste.com/98461/

mysite.conf:http://dpaste.com/98462/

我的wsgi处理程序:

import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

最佳答案

在嵌入式模式下使用带有许多进程的prefork MPM和mod_wsgi时,您可能会破坏包装盒的性能。首先,建议您阅读:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html

使用像您一样的嵌入式模式,您需要仔细调整MPM参数。将MaxRequestsPerChild设置为非零不是一个好的开始,因为您将定期强制执行A​​pache进程,结果将导致负载高峰,因为必须重新加载所有内容。

建议使用MPM并在mod_wsgi守护程序模式下运行Python Web应用程序。首先,这将减少运行的进程,减少内存开销,并为系统性能提供更多的可预测性。然后可以开始更仔细地研究为什么事情运行速度变慢。

要注意的一件事是您在“ab”输出的以下部分中所获得的内容:

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 0 0.2 0 2
Waiting: 0 0 0.1 0 2
Total: 0 0 0.2 0 2

如果max列显示较大的值,那么您将受到应用程序加载成本的打击,这是因为您没有通过预加载消除它们,或者通过较短的进程重新启动间隔将它们从测试中消除了。

关于django - Django中的并发性能(apache2 prefork/mod_wsgi),我在做什么错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com