apache 上的网站太多

Gui*_*Gui 1 linux ubuntu django mod-wsgi apache-2.4

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

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

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

WSGIDaemonProcess my.domain python-home=/var/www/env python-path=/var/www/my_app threads=1
Run Code Online (Sandbox Code Playgroud)

apache 在达到大约 1300 个线程时崩溃(当我检查 htop 时)。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
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

lsof -u www-data | wc -l

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

ulimit -s

并设置新值

ulimit -s 值


附:尝试这些设置以获得 100k 线程能力:

ulimit -s 256

ulimit -i 120000

回声 120000 > /proc/sys/kernel/threads-max

回声 600000 > /proc/sys/vm/max_map_count

回声 200000 > /proc/sys/kernel/pid_max

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