現在のリクエストを処理しているものとは異なる mongrel を nginx で使用するにはどうすればよいでしょうか?

現在のリクエストを処理しているものとは異なる mongrel を nginx で使用するにはどうすればよいでしょうか?

私たちのサイトでは 12 個の mongrel クラスターが稼働しており、ローカル開発バージョンでは 5 個の mongrel クラスターが稼働しています。nginx ( version: nginx/1.22.0) が前面に配置されています。

私たちのプロセスの 1 つは、コマンドライン ツールである wkhtmltopdf にシェルアウトして PDF を作成し、次に Web サイトを呼び出してページを取得し、それを PDF に変換します。

これは機能していますが、ページのリクエストがシェルを実行した同じ雑種 (常に雑種 1) に送信され、デッドロックが発生します。最初のリクエストは 2 番目のリクエストが完了するのを待機していますが、2 番目のリクエストは最初のリクエストの後のキューにあります。

Mongrel Top (delay: 0.25)                                                                                                                                                                 Fri Sep 22 16:47:59 2023

65347 sh -c start -p 3000 & mongrel_rails start -p 3001 & mongrel_rails start -p 3002 & mongrel_rails start -p 3003 & mongrel_rails start -p 3004
65348 [3000/2/11]: handling 127.0.0.1: POST /admin/school_quotes/CMS1Y-187790-107226, 127.0.0.1: GET /
65349 [3001/0/0]: idle
65350 [3002/0/0]: idle
65351 [3003/0/0]: idle
65352 [3004/0/0]: idle

6 process(es)

私の nginx 設定では、現在ビジー状態になっているものとは異なる mongrel を使用するようにしていますが、成功していません。常にランダムに 1 つを選択するだけなので、同じものを選択してロックする可能性が 20% あります。(50% のように感じますが)

関連する nginx 構成ブロックは現在次のようになります。

upstream elrs {
  # least_conn;
  # random two;
  # round_robin;
  zone backends 128k;
  server 127.0.0.1:3000 max_conns=1 max_fails=3 fail_timeout=2;
  server 127.0.0.1:3001 max_conns=1 max_fails=3 fail_timeout=2;
  server 127.0.0.1:3002 max_conns=1 max_fails=3 fail_timeout=2;
  server 127.0.0.1:3003 max_conns=1 max_fails=3 fail_timeout=2;
  server 127.0.0.1:3004 max_conns=1 max_fails=3 fail_timeout=2;
}

max_connsすべて 1 に設定したら問題が解決するかもしれないと思いましたが、解決しませんでした。そのleast_connオプションも試しましたが、2 回目または 3 回目に試したときに、両方とも再び雑種 1 に設定されました。

それを読んで試してみましたround_robinが、エラーが発生しました -nginx: [emerg] unknown directive "round_robin"

アドバイスをいただければ幸いです。ありがとうございます。

関連情報