【问题标题】:How do I scale my apache server with virtualhosts?如何使用虚拟主机扩展我的 apache 服务器?
【发布时间】:2014-06-06 18:10:15
【问题描述】:

在过去的几周里,我的服务器变得越来越忙,我正在努力跟上需求,但在努力跟上需求方面做错了事。我有 2 个域:www.example.com 和 api.example.com 以及以下 httpd.conf 文件:

MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
ThreadsPerChild 15
WSGIDaemonProcess api python-path=/path/to/python2.7 processes=8 threads=15

<VirtualHost *:18546>
    ServerName api.example.com
    ServerAlias api.example.com
    KeepAlive Off
    WSGIDaemonProcess api.example.com processes=1 threads=20 inactivity-timeout=100 display-name=[api]httpd
    WSGIProcessGroup api.example.com
    WSGIScriptAlias / /path/to/wsgi.py
    ErrorLog /path/to/error.log
</VirtualHost>

<VirtualHost *:18546>
    ServerName www.example.com
    ServerAlias www.example.com
    KeepAlive Off
    WSGIDaemonProcess www.example.com processes=1 threads=20 inactivity-timeout=10 display-name=[www]httpd
    WSGIProcessGroup www.example.com
    WSGIScriptAlias / /path/to/wsgi2.py
    ErrorLog /path/to/error2.log
</VirtualHost>

当我在 linux 中查看我的进程列表时,我看到了以下进程:

[www]httpd
[api]httpd
/path/to/api/
/path/to/api/
/path/to/api/
/path/to/api/
/path/to/api/
/path/to/api/
/path/to/api/
/path/to/api/

api 子域似乎正在生成子域,但 www 子域没有。我做错了什么?

编辑:使用 Apache 2.2.25

【问题讨论】:

  • 我不确定,但我看到你在配置顶部有WSGIDaemonProcess api ... processes=8,而你的其他WSGIDaemonProcess 指令有processes=1。这可能就是为什么有 8 个 api 进程和 1 个其他进程的原因(即,因为这是你要求 Apache 做的)。
  • 是的,www 有 1 个进程,api 有 1 个进程。但是为什么api有8个线程而www没有呢?
  • 我最终放弃了 apache 换成了 nginx。更容易配置,IMO。

标签: apache configuration apache2.2


【解决方案1】:

您要求 threads=20process=1 两者都要求,但您也只要求 1 个进程 (ServerLimit 1),最多 15 个线程 (ThreadsPerChild 15) - 默认通常为 64。所以您要求的超出您在限制中设置的范围

当你的空闲线程少于 1 个时,将创建另一个线程,如果你有超过 3 个空闲线程,则会删除线程,所以当你接近 15 个线程的数量时,Apache 肯定会创建和删除线程,很多。

您没有更改 ThreadLimit 默认值(很高),所以如果您有很多人请求您的服务器,您可能会增长到大量线程(如果每个线程都非常活跃),并且当您有更多线程时超过 20 个线程,您可能会将其中一些线程连接到子域。

我可能错了,但这是合乎逻辑的。

【讨论】:

  • 我现在有几个不赞成票......没有评论。也许只是为了强调使用 Nginx 是更好的解决方案这一事实?常见的是,始终是“使用 nginx”的关于 Apache 性能的响应将与早期 SO 时代的“jQuery for all”响应一样愚蠢。这是 Apache 的问题,而不是 Apache 与 Nginx 的调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2021-08-20
  • 2018-05-04
  • 1970-01-01
  • 2016-11-06
  • 2020-02-02
相关资源
最近更新 更多