将 FastCGI 用于高负载 Web 服务器的最佳实践

发布于 2024-10-12 15:17:29 字数 620 浏览 1 评论 0原文

我有一个网络服务器,唯一的任务是运行图像处理。
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 呢?

先感谢您 :)

I have a web server that sole task is to run images processing.
The image processing on the web server loads the same XML settings file (up to 2MB).
To save XML file loading time for every request I use follow architecture:

  1. The web server is Apache (2.2.16) with MPM prefork and FastCGI (fcgi_mod) with image processing application (C++).
  2. Invoked image processing application loads the XML file and spawns N threads and each thread runs:

    thread_func()
    {
    FCGX_InitRequest
    while(true)
    {
    FCGX_Accept_r
    Request (image) processing and FCGX_FPrintF/FCGX_PutStr
    FCGX_Finish_r
    }
    }

One of the weakness of this model is that at most one thread in each Apache process will do its work while being between FCGX_Accept_r and FCGX_Finish_r calls. Does it worth then to have 1 thread only per process (single thread), but to increase the MaxClients ?

Thank you in advance :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悸初 2024-10-19 15:17:29

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

you can use the fastcgi module, it's allow more than one thread per process

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文