我正在运行一个 Django Web 应用程序,并且在我的主 Web 服务器上有 4 个运行 ModPython 的 Apache 实例。我在前端运行 Nginx,Nginx 将所有 Django URL 代理到 Apache 服务器池。
我如何知道是否需要运行更多 Apache 实例来处理增加的负载?我收到过一些关于超时的投诉,我的第一个想法是没有运行足够的 Apache 实例。
更新:更正,我正在运行一个有 4 个子进程的 apache 实例。在 Linux 上使用“ps -ef | grep apache”时,它们确实显示为 5 个不同的进程。
答案1
您不需要像这样在同一台服务器上运行多个 Apache 实例,这样只会消耗更多内存。如果需要,请设置一个带有多个子节点的 Apache(根据您使用的工作模型,此处的“子节点”可能表示进程、线程或多个进程内的线程)。
如果问题是“Apache 不足以满足请求”,我预计会出现 50x 错误(直接来自 Apache 或来自 nginx)而不是超时(除非你的用户看到的错误是nginx 出现 50x 错误页面,提示等待 Apache 处理长请求或接受新请求超时)。
您需要获取有关用户看到的“超时”的更多详细信息,因为它可能由很多原因造成 - 错误可能来自他们的终端、nginx、apache、您的 python 代码或您的数据库。
另外,监视内存使用情况(包括交换)、CPU 负载和 I/O 吞吐量,以便在下次报告超时时可以查看是否存在明显的问题线索。