【问题标题】:Best practices for using FastCGI for highly loaded web server将 FastCGI 用于高负载 Web 服务器的最佳实践
【发布时间】:2011-01-20 08:10:10
【问题描述】:

我有一个网络服务器,唯一的任务就是运行图像处理。
Web 服务器上的图像处理加载相同的 XML 设置文件(最大 2MB)。
为了节省每个请求的 XML 文件加载时间,我使用以下架构:

  1. Web 服务器是带有 MPM prefork 的 Apache (2.2.16) 和带有图像处理应用程序 (C++) 的 FastCGI (fcgi_mod)。
  2. 调用的图像处理应用程序加载 XML 文件并产生 N 个线程,每个线程运行:

    thread_func()
    {
    FCGX_InitRequest
    而(真)
    {
    FCGX_Accept_r
    请求(图像)处理和 FCGX_FPrintF/FCGX_PutStr
    FCGX_Finish_r
    }
    }

该模型的一个弱点是,每个 Apache 进程中最多有一个线程在 FCGX_Accept_r 和 FCGX_Finish_r 调用之间执行其工作。那么每个进程(单线程)1 个线程,但增加 MaxClients 是否值得?

提前谢谢你:)

【问题讨论】:

    标签: fastcgi


    【解决方案1】:

    您可以使用fastcgi 模块,它允许每个进程有多个线程

    【讨论】:

    • 线程数不是问题。我可以为每个 apache Web 服务器进程创建多个线程。问题是在 FCGX_Accept_r 和 FCGX_Finish_r 调用之间执行代码是否值得。
    • 每个线程可以接受一个请求并处理这个请求,所以是的
    • 这是否意味着如果我有 5 个 Web 服务器进程,每个进程有 10 个线程,那么可以同时处理 50 个请求?
    • 取决于什么是“Web 服务器进程”,它是 apache 进程,还是你的 fcgi 应用程序的 1 个进程,我认为 apache 不会通过 apache 进程运行一个 fcgi 进程,我只使用工人 mpm 进行少量测试,我使用 nginx 进行开发测试
    • 一个 Web 服务器进程调用我的 fcgi 应用程序的一个进程。 fcgi 应用程序进程有 N 个(比如说 10 个)线程。 web服务器配置为MPM prefork,所以web服务器进程数等于fcgi app进程数。
    猜你喜欢
    • 2015-07-26
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2014-07-07
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多