gpt4 book ai didi

python - Django、python、mod_wsgi 和 Apache worker

转载 作者:太空狗 更新时间:2023-10-30 00:17:58 24 4
gpt4 key购买 nike

我刚刚从 apache prefork 转移到 worker 并开始以守护进程模式运行 mod_wsgi。到目前为止,一切都很好。我还没有经历过最大负载,但服务器似乎更加一致,我们没有看到随机请求需要 2 分钟等待 mod_wsgi 响应。内存占用从3.5G变成了1G。这太棒了。我们在具有 6G 内存的单个 VPS 上运行。这个服务器上运行着一个 Django 应用程序以及一个内存缓存实例,我们已经为其分配了 1G 内存。我们有一个单独的 MySql 服务器。

我们的应用程序体积庞大,当然可以优化。我们正在使用 NewRelic 对一些运行速度较慢的页面进行故障排除。我已经阅读了很多关于优化 mod_wsgi/apache 的文章,但是和其他人一样,我仍然有几个问题。

我们的平均应用程序页面加载时间为 650-750 毫秒。我们的很多页面都在 200 毫秒的范围内,但我们有一些狗需要 2-5 秒以上的时间来加载。在正常加载时间我们每秒收到大约 15-20 个请求,在高峰时间每秒收到 30-40 个请求,这可能会持续 30-60 分钟。

这是我的 apache 配置,运行 worker mpm。

StartServers        10
MaxClients 400
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

我从默认值(StatServers=2 和 MaxClients=150)开始,但我们的网站在最小负载下速度变慢了。我猜随着请求的到来,启动服务器需要很长时间。我们 90% 的媒体都来自 s3。其他 10% 通过 Apache 在我们的 https 页面上提供服务,或者有人懒惰地指向我们的本地服务器。在标称负载下,最终创建了 15 个工作进程,所以我想我应该只设置 StartServers=15?使用此配置,我假设我有 15 个工作进程正在运行(我可以用 NewRelic 确认),每个进程有 25 个线程(我不知道如何确认,猜测是 400/15)。

我的 apache/mod_wsgi 指令是这样的:

<VirtualHost *:80>
# Some stuff
WSGIDaemonProcess app1 user=http group=http processes=10 threads=20
WSGIProcessGroup app1
WSGIApplicationGroup app1
WSGIScriptAlias / /path/to/django.wsgi
WSGIImportScript /path/to/django.wsgi process-group=app1 application-group=app1
# Some more stuff
</VirtualHost>

<VirtualHost *:443>
# Some stuff
WSGIDaemonProcess app1-ssl user=http group=http processes=2 threads=20
WSGIProcessGroup app1-ssl
WSGIApplicationGroup app1-ssl
WSGIScriptAlias / /path/to/django.wsgi
WSGIImportScript /path/to/django.wsgi process-group=app1-ssl application-group=app1-ssl
# Some more stuff
</VirtualHost>

我站点的 ssl 端有一个不同的 WSGIDaemonProcess/WSGIProcessGroup,好吧,这根本感觉不对。我 100% 确定我在这里搞砸了一些东西。更重要的是,我为 mod_wsgi 分配了 200+40 个线程来处理来自 Apache 的请求,留下 160 个线程来处理需要传送的任何媒体(通过 ssl 或不指向 s3 的懒惰)。

鉴于我们上面的应用程序负载,任何人都可以建议我提高网站性能的方法吗?我是否正确处理了 ssl/mod_wsgi 指令?格雷厄姆在哪里? ;)

最佳答案

关于python - Django、python、mod_wsgi 和 Apache worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604995/

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