Apache 上的网站太多

Apache 上的网站太多

我的服务器有太多虚拟主机,大约有 500 个虚拟主机,其中一半使用 SSL。

所有这些主机都为 Django 应用程序提供了 mod_wsgi 服务。

我注意到,在一定数量的虚拟主机之后,我的所有服务器都停止工作并且所有站点崩溃,我可以使用以下行来处理降低每个虚拟主机的线程数:

WSGIDaemonProcess my.domain python-home=/var/www/env python-path=/var/www/my_app threads=1

当达到约 1300 个线程时(当我在 htop 中检查时),apache 会崩溃。apache 的错误日志表明未找到模块 Django,但这不是真正的错误,因为一切正常,只是当 vhosts 数量过高时才会发生这种情况。所以我认为我在 Linux 中达到了进程或线程的某种限制。我使用的是 Ubuntu 18.04、Apache 2.4,并且有足够的 RAM 和 CPU,服务器有 4 GB 的 RAM,只使用了 2 GB,平均 CPU 为 10% 到 20%。

我还使用以下命令检查了我的线程最大限制:

cat /proc/sys/kernel/threads-max
30893

我该怎么做才能在不创建另一台服务器的情况下增加 Apache 中虚拟主机的容量。

答案1

1.您可能打开的文件比您想象的要多。一种(大致)判断方法是:

lsof -u www 数据 | wc -l

2.尝试增加堆栈大小。看看有多少电流

ulimit -s

并设置新值

ulimit -s 值


附言:尝试这些设置以实现 100k 个线程的能力:

ulimit -s 256

ulimit -i 120000

echo 120000 > /proc/sys/kernel/threads-max

echo 600000 > /proc/sys/vm/max_map_count

echo 200000 > /proc/sys/kernel/pid_max

/etc/systemd/logind.conf:UserTasksMax=100000

答案2

站在您的立场上,考虑到虚拟主机的数量,我会使用负载平衡器和反向代理将负载分配到至少几台服务器之间。

相关内容