症状
条件は以下.
$ cat /etc/redhat-release
CentOS release 5.4 (Final)
$ uname -a
Linux mike.bw.nitech.ac.jp 2.6.18-164.2.1.el5 #1 SMP Wed Sep 30 12:52:46 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
test.sh
#!/bin/bash
for i in `seq 1 200`
do
rsh cnode005 "echo $i" &
done
というシェルスクリプトを実行すると,169までは実行されるが,それ以降はpoll: protocol failure in circuit setup
というエラーが出て実行されない(この169というのは再現性がある.つまり同時並列rshのリミットがその値なのだろう).直後にまたtest.sh
を実行すると,最初から同様のエラーが出るが,少し間をおいて実行するとまた,169までは実行される...
test2.sh
#!/bin/bash
for i in `seq 1 100`
do
rsh cnode005 "echo $i"
done
for i in `seq 1 100`
do
rsh cnode006 "echo $i"
done
のように,別のリモートホストに100回づつ接続するのであれば問題は生じない.
つまりこのリミットはリモートホスト側の制限ということになる.
現状
あるサイトを参考にしてrsh
に-n
オプションを付けて,リモートホストで< /dev/null
を加えてみたが,解決されなかった.
test.sh
#!/bin/bash
for i in `seq 1 200`
do
rsh cnode005 -n "echo $i < /dev/null" &
done
結論
分からん...
まぁ,なんにせよ,rshやsshには(それを利用するmpirunなどにも)ある時間内の同時接続数制限があると考えてプログラムを考えた方が良さそうだ...