serverspec が sshd の file descriptor の制限にひっかかった件([2013-06-13-2])の
対応として、sshd の file descriptor の制限を変更する方法を考える。
一番簡単なのは、/lib/svc/method/sshd の start 部分に ulimit を追加する方法。
'start') # # If host keys don't exist when the service is started, create # them; sysidconfig is not run in every situation (such as on # the install media). # create_key $SSHDIR/ssh_host_rsa_key rsa create_key $SSHDIR/ssh_host_dsa_key dsa ulimit -n 8192 /usr/lib/ssh/sshd ;;
これはお手軽だけど、パッケージの管理下にあるファイルを変更したくない。
@nsloop 先生によると
資源管理あたりが良さげかと。 ow.ly/lZa4mRT @ftnk: 【緩募】 Solaris の sshd の file descriptor 制限を変更する、/lib/svc/method/sshd に ulimit -n #osoljp
— Noriyasu Sakaueさん (@nslope) 2013年6月13日
@ftnk あ、というか、SMFのマニフェストの中にProject書けた気がします
— Noriyasu Sakaueさん (@nslope) 2013年6月13日
ということなので、この辺りを調べてみる。
一時的に変更したければ、
.@ftnk `plimit -n 8192 $(ctstat -vi $(svcs -H -o CTID ssh) |sed -n 's/ *member processes://p')` とか。svc:/network/ssh:default の起動後にどう自動実行するか…。
— さとうふみやす (fumiyas)さん (@satoh_fumiyasu) 2013年6月13日
contract 経由で PID を調べることで、目的の sshd のプロセスを特定できるのは便利。