AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Rails のコネクションプール数

基本的に Rack サーバの Worker 数と同じにするべき。

qiita.com

Puma Web サーバー​を使用している場合は、pool​ 値を同等の ENV['RAILS_MAX_THREADS']​ に設定することをお勧めします。複数のプロセスを使用している場合は、各プロセスに独自のプールが含まれるため、ワーカープロセスが ENV['RAILS_MAX_THREADS']​ を超えない限りはこの設定で十分です。

devcenter.heroku.com

heroku くんもこう言っとる。 基本的に default に当たり障りない値を書いておき (これ今も初期化時に記述されるんでしたっけ)、リモート各種の ENV に個別に記述してあげようね。

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default

staging:
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 2 } %>

test:
  <<: *default

production:
  <<: *default
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 6 } %>

RAILS_MAX_THREADS を設定する効果が、コネクションプール以外で発揮されるのかは、わからないです……。

それでもあふれるタイミングがある

インフラを見ている案件、稀にコネクションプール枯渇のお知らせが来る事が出てきて、今月は片手で数えられるくらいだった。 Thread も Worker も利用していないようなので問題ないと思うんだけどなあ、と思っていたけど、 Faraday で外部のサーバと通信しているかつ、この外部サーバがよく死ぬので、その箇所でなんかスタックして新規接続にコネクション配れないのか? という気がしている。

コネクション is 難しい。

AmazonLinux2 に snapd を入れて certbot による証明書自動更新生活を満喫する

前回 CentOS に snap を入れたら、謎のタイムアウトエラーで勝手にデーモンが死ぬ現象に遭遇。あまりに腹が立つので、別の環境で再試行してみることにしたらまた大変だったお話。

ざっと調べてみたら、メタ情報を編集させて認識させる? など一年程度以上前の記事では、そのような記述がありましたが、現在はそこまでしなくても大丈夫なようになっていました。

続きを読む

prezto+powerlevel9k からユーザ・ホスト名を消す

zsh に prezto と powerlevel9k を設定して使っていて、これらはとても便利。 なのですが、プロンプトに ユーザ@ホスト のように表示されており、作業証跡としてスクリーンショット取得したり、ターミナルの出力を利用すると写り込んだ情報がたまに邪魔といわれ困る。

ので、これを変更する。

どうする

環境によるけど、 ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setupL617 あたりの記述を変更すれば良い。

set_default POWERLEVEL9K_CONTEXT_TEMPLATE "%n@%m"
↓
set_default POWERLEVEL9K_CONTEXT_TEMPLATE "✖╹◡╹✖"

f:id:donbulinux:20210209235730p:plain
一体何ゆのっちなんだ……

できた。 固定文言を指定しているのが、シェルで色々変更できるので好きなように変更すると良い。

MySQL 8 でのバイナリログの無効化

MySQL 8.0.x ではバイナリログが標準で有効化されている。 ので、無効化する。

[mysqld]
disable-log-bin

これでヨイ。

本当はローテートするようにして、ログを無効化しない方が良いのだけれど、開発環境だったり、定点バックアップ毎にしかデータ保証しない (保守コストの兼ね合い) 等の場合はこうしてやればヨイ。