JoyentがSmartOS用にパッケージ提供するrabbitmqをインストールして起動すると、デフォルトのFDが1024と心もとないので増やす。
変更対象ファイル
/opt/local/etc/rabbitmq/rabbitmq-env.conf
ulimit -n 10240
リスタートするとFDが増えている。
# svcadm restart rabbitmq
# plimit `pgrep beam`
20741: /opt/local/lib/erlang/erts-5.9.1/bin/beam.smp -W w -K true -A30 -P 104
resource current maximum
time(seconds) unlimited unlimited
file(blocks) unlimited unlimited
data(kbytes) unlimited unlimited
stack(kbytes) 10240 unlimited
coredump(blocks) unlimited unlimited
nofiles(descriptors) 10240 10240
vmemory(kbytes) unlimited unlimited
追った軌跡
smfのマニュフェストをいじろうかと思っていたが、まわりまわってコンフィグファイルで良かった。
- smfで確認、
/opt/local/sbin/rabbitmq-server
が起動スクリプト。 rabbitmq-server
は/opt/local/sbin/rabbitmq-env
をドットコマンドで読んでいた。rabbitmq-env
では/opt/local/sbin/rabbitmq-defaults
をドットコマンドで読んでいた。rabbitmq-defaults
ではユーザ環境ファイル/opt/local/etc/rabbitmq/rabbitmq-env.conf
を定義していた。rabbitmq-env
に帰ったらユーザ環境ファイルをドットコマンドで読んでいた。- 最後に
rabbitmq-server
をsh -x
オプションで実行して起動処理の中盤でulimitが実行されているのを確認した。
なかなか回りくどいが結果オーライ。