問題タブ [puma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2819 参照

ruby-on-rails - Gemfile が変更されると Puma の段階的な再起動が失敗する

MRI 2.1.0 で Rails 4 プロジェクトのアプリケーション サーバーとして Puma を使用しています。Capistrano 3 を使用してデプロイメントを処理しています。すべてが魅力のように機能しています。しかし、最近、展開プロセスに問題があることに気付きました。次に Gemfile を変更すると、puma は段階的な再起動を完了できず、最終的にすべてのワーカーが強制終了されます。Puma をクラスター モードで実行しており、preload_app!true に設定されています。

段階的な再起動を処理するためのカピストラーノのレシピを次に示します。

これは Capistrano ログの切り捨てられた出力です。

これは私のconfig/puma.rbファイルです。

私の puma 設定ファイルに何か問題があると思われる人はいますか?

ですから、現在、私はbundle exec cap production deploy:startこれが起こったときに Puma を開始します。しかし、私はあらゆる場合にダウンタイムゼロの展開を望んでいます。

新しい生成されたプロセスを開始できなかった場合、Puma は古いワーカー プロセスを使用し続けることができますか?

0 投票する
1 に答える
1075 参照

ruby-on-rails - リクエストがレールに処理されたら、プーマスレッドを強制終了します

スレッドの数pumaを変更して、複数のリクエストを同時に処理できます。しかし、Heroku の場合、postgres へのデータベース接続は制限されています。

より多くのリクエストを処理するために、dyno の数を増やすことができます。各 dyno には、デフォルトで 0:16 のスレッドがあります。この場合、負荷がかかると、各 dyno はデータベースに対して 16 の接続を確立できます。

RailsActiveRecordでは、次の構成を使用して、Rails ワーカー プロセスごとのデータベース接続数を制限できます。

ただし、db 接続制限では、dyno の数が増えると接続制限に達します。

リクエストが処理されたらすぐにスレッドを強制終了してデータベース接続を閉じる方法はありますか?

pgbouncerasを使用してみましたbuildpackが、準備済みステートメントに問題があります。

現在rails 4.0.0使用中puma 2.7.1です。

リクエストが完了したときにこのように構成できるイベントフックがプーマにありますか?

0 投票する
1 に答える
4791 参照

ruby-on-rails - Ubuntu での Puma の再起動

Puma を機能させるために、Ubuntu で Puma を 2 回再起動する必要があるのはなぜですか?

0 投票する
1 に答える
2791 参照

ruby-on-rails - ラック ミドルウェアとスレッド セーフ

Rails 4 アプリケーションで使用するカスタム ラック ミドルウェアがあります。ミドルウェア自体は、クライアントが有効な情報を提供しなかった場合にデフォルトAcceptContent-Typeヘッダーを作成するためにここにありますapplication/json(私は API に取り組んでいます)。したがって、各リクエストの前にこれらのヘッダーを変更し、各リクエストの後に、カスタム メディア タイプ情報を含むカスタム X-Something-Media-Type ヘッドを追加します。

Puma に切り替えたいので、そのようなミドルウェアのスレッドセーフが少し心配です。すべてのミドルウェアで遭遇する共通のものを除いて、私はインスタンス変数を@app.callいじりませんでしたが、ここでも RailsCasts のコメントで読んだものを再現しました:

dup._callスレッドセーフの問題を処理するために本当に便利ですか?

そのインスタンス変数を除いて、@app私は現在の環境変数で構築された現在のリクエストでのみ再生します:

env.updateそして、ヘッダーとフォーム情報を更新するために呼び出します。

Webrickからのような同時 Web サーバーに切り替えるときに、そのミドルウェアで何らかの問題が発生すると予想するのは危険Pumaですか?

はいの場合、スレッドセーフではないミドルウェアの部分を分離していくつかのテストを行ういくつかの方法を知っていますか?

ありがとう。

0 投票する
1 に答える
2182 参照

ruby-on-rails - Rails dev サーバーを Puma ではなく webbrick に設定する方法

サーバーにHerokuでPumaを使用しています。Puma gem をインストールすると、私の開発環境は Puma をサーバーとして起動します。gemfileからpum gemを引っ張らないと、それを止めることができないようです。

セーブ サーバーを開発用として運用用として使用するというアイデアは気に入っていますが、puma サーバーではデバッグ ステートメントを追跡するのが難しくなっています。また、最大スレッドを変更する方法がないようです。 puma.rb ファイルで 1 に設定されていても、dev で 16 と表示されます。

0 投票する
2 に答える
3305 参照

ruby-on-rails - 生産ログは空白ですか?

私のプーマ設定:

私の環境/ production.rb

サーバーを起動します。

アプリについて閲覧します。私のlog/production.logは空白です。なぜかわからない?

ディレクトリへのアクセスは0777アプリ全体にあります。

何が原因なのかわかりません。本当にログが必要です (明らかに)。ローカルおよびリモートで発生しているため、私の構成に関係しています。ただし、どのような構成かはわかりません。これを引き起こしている可能性のある puma/ubuntu/rails に何かありますか?

development.log は完全に機能します。

development.rb を production.rb ファイルにコピーして貼り付けました。文字通り同一。わかった?同じ development.rb と production .rb さらに:

development.log に入力します

キム・カーダシアンの頭のように production.log を空のままにします。