首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache mod_wsgi调优

Apache mod_wsgi调优
EN

Server Fault用户
提问于 2018-02-06 22:16:44
回答 1查看 2K关注 0票数 0

我在网站上有一个使用apache + mod_wsgi的django站点。

网站大约每分钟收到1000个请求。

但是它做了一些计算,所以请求大约需要5-10秒。

我使用以下配置

代码语言:javascript
运行
复制
StartServers         2
MinSpareThreads      10
MaxSpareThreads      25
ThreadLimit          25
ThreadsPerChild      25
MaxClients           75
MaxRequestsPerChild   1000

threads=15 processes=12

问题是CPU使用率很高,处理一个简单的静态页面需要时间而不需要计算(看起来像Apache排队请求)。

因此,我希望Apache能够快速地接受请求。

我完全迷失了,因为参数的数量,我也不太明白他们的意思。我们需要StartServersMaxRequestWorkers做什么?

如有任何帮助和/或解释,将不胜感激。

我有8GB内存。

阿帕奇MPM工人

mod_wsgi 4.4.21.

提前谢谢你。

EN

回答 1

Server Fault用户

发布于 2018-02-07 16:05:06

StartServers是您开始使用的服务器进程的数量,MaxRequestWorkers是每个进程的线程数。在大多数情况下,Web派系设置应该是合理的,尽管每分钟可能需要调整1000个请求,但可能主要是在应用程序中。

在正常使用中,httpd会接受一个请求,将它传递给mod_wsgi,然后等待它的返回,这应该是近乎瞬时的,所以实际上占用它时间的是python正在做的任何事情。因此,您的httpd工作线程处于等待状态,在处理其他请求时,当请求传入时,将生成这些线程,因此,如果线程被占用,即使是静态页面也会等待。

看看应用程序正在做什么,并寻找解决方案。您可以使用memcached或类似的方式缓存查询。如果您的应用程序处理请求所需的时间是不可避免的,请考虑使用像芹菜这样的消息队列使其异步,所以您可以使用浏览器端脚本来轮询web服务器,而不是让web服务器等待响应。

将静态页面从动态中分离也将改善响应。如果可能的话,您可以运行多组工作人员,或者将静态页面和对象传递给nginx,这是一种更常见的处理wsgi的方法。

另一种方法是通过本地web服务器(如tornadogunicorn )为python提供服务,并使用apache作为反向代理,这可能会改善后端响应,但如果进程导致大量等待线程,这仍然没有帮助。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/895981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档