我目前正在运行带有由 Plack::Handler::Apache2 调用的 PSGI 应用程序的 Apache/mod_perl。我们遇到的问题是每个 Apache 进程都会消耗一个到 PostgreSQL 数据库的连接,这很昂贵。为了解决这个问题,我们计划运行与 Apache 分开的 PSGI 应用程序,并让所有 Apache 进程通过 UNIX 域套接字与其进行通信。在我的情况下,您会推荐什么设置?
我的计划是使用 plackup 运行它:
plackup -s FCGI -E production --nproc 100 --daemonize --listen /tmp/myapp.sock \
/usr/local/bin/myapp.psgi
Run Code Online (Sandbox Code Playgroud)
我问过 Plack 的作者 Tatsuhiko Miyagawa,是否建议将 plackup -s FCGI 用于生产目的。他提供了以下答案:
“虽然它可以用于生产,但我通常建议使用其他专用服务器,例如 Starman、Starlet 或 uwsgi。FCGI 是一个例外,因为除了默认的 Plack::Handler 之外,我们没有特定的 FCGI 守护进程。我们有一个计划将 FCGI 从 Plack 核心中分离出来,并将其作为单独的安装。”
现在,在 FCGI 从 Plack 中分离出来之前,问题是,在 Apache 之外使用 FastCGI 运行 PSGI 应用程序的最佳方法是什么?