問題タブ [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.
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 は古いワーカー プロセスを使用し続けることができますか?
ruby-on-rails - リクエストがレールに処理されたら、プーマスレッドを強制終了します
スレッドの数puma
を変更して、複数のリクエストを同時に処理できます。しかし、Heroku の場合、postgres へのデータベース接続は制限されています。
より多くのリクエストを処理するために、dyno の数を増やすことができます。各 dyno には、デフォルトで 0:16 のスレッドがあります。この場合、負荷がかかると、各 dyno はデータベースに対して 16 の接続を確立できます。
RailsActiveRecord
では、次の構成を使用して、Rails ワーカー プロセスごとのデータベース接続数を制限できます。
ただし、db 接続制限では、dyno の数が増えると接続制限に達します。
リクエストが処理されたらすぐにスレッドを強制終了してデータベース接続を閉じる方法はありますか?
pgbouncer
asを使用してみましたbuildpack
が、準備済みステートメントに問題があります。
現在rails 4.0.0
使用中puma 2.7.1
です。
リクエストが完了したときにこのように構成できるイベントフックがプーマにありますか?
ruby-on-rails - Ubuntu での Puma の再起動
Puma を機能させるために、Ubuntu で Puma を 2 回再起動する必要があるのはなぜですか?
ruby-on-rails - ラック ミドルウェアとスレッド セーフ
Rails 4 アプリケーションで使用するカスタム ラック ミドルウェアがあります。ミドルウェア自体は、クライアントが有効な情報を提供しなかった場合にデフォルトAccept
でContent-Type
ヘッダーを作成するためにここにありますapplication/json
(私は API に取り組んでいます)。したがって、各リクエストの前にこれらのヘッダーを変更し、各リクエストの後に、カスタム メディア タイプ情報を含むカスタム X-Something-Media-Type ヘッドを追加します。
Puma に切り替えたいので、そのようなミドルウェアのスレッドセーフが少し心配です。すべてのミドルウェアで遭遇する共通のものを除いて、私はインスタンス変数を@app.call
いじりませんでしたが、ここでも RailsCasts のコメントで読んだものを再現しました:
dup._call
スレッドセーフの問題を処理するために本当に便利ですか?
そのインスタンス変数を除いて、@app
私は現在の環境変数で構築された現在のリクエストでのみ再生します:
env.update
そして、ヘッダーとフォーム情報を更新するために呼び出します。
Webrick
からのような同時 Web サーバーに切り替えるときに、そのミドルウェアで何らかの問題が発生すると予想するのは危険Puma
ですか?
はいの場合、スレッドセーフではないミドルウェアの部分を分離していくつかのテストを行ういくつかの方法を知っていますか?
ありがとう。
ruby-on-rails - Rails dev サーバーを Puma ではなく webbrick に設定する方法
サーバーにHerokuでPumaを使用しています。Puma gem をインストールすると、私の開発環境は Puma をサーバーとして起動します。gemfileからpum gemを引っ張らないと、それを止めることができないようです。
セーブ サーバーを開発用として運用用として使用するというアイデアは気に入っていますが、puma サーバーではデバッグ ステートメントを追跡するのが難しくなっています。また、最大スレッドを変更する方法がないようです。 puma.rb ファイルで 1 に設定されていても、dev で 16 と表示されます。
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 を空のままにします。