Aktuelt har jeg et problem med, at rsh fejler, når der er "pres på",
dvs når der laves mange rsh-forbindelser efter hinanden. For
eksempel når jeg fra to noder (samtidigt) kører op imod en tredie
som f.eks.:
bjb@n001> for i in `seq 1 300`; do echo $i ; rsh n003 true ; done
bjb@n002> for i in `seq 1 300`; do echo $i ; rsh n003 true ; done
Efter en stund får jeg:
...
157
158
poll: protocol failure in circuit setup
159
poll: protocol failure in circuit setup
...
På den tilgåede node (her n003) ser jeg i /var/log/messages masser
af disse:
...
Apr 25 10:05:21 n003 rshd[16606]: can't get stderr port: Resource
temporarily unavailable
Apr 25 10:05:21 n003 rshd[16610]: can't get stderr port: Resource
temporarily unavailable
Apr 25 10:05:21 n003 rshd[16611]: can't get stderr port: Resource
temporarily unavailable
...
Jeg har ændret i /etc/xinetd.conf (og /etc/xinietd.d/rsh) og sørget
for, at bruge:
cps = 200 1
instances = UNLIMITED
per_source = UNLIMITED
Men det har ikke hjulpet (har genstartet xinetd).
Når jeg kører nogle af vores perl-baserede programmer med bedre
håndtering af STDERR, kan jeg på klient-siden (her n001 og n002)
også se fejl som:
rcmd: socket: All ports in use
Jeg er klar over, at rsh bruger "trusted ports" (max op til no 1023
eller så). Selv om vi bruger mange rsh-forbindelser, så bruger vi
ikke særligt mange *ad gangen*.
Jeg har pt en fornemmelse af at problemet kan have at gøre med, at
systemet ikke frigiver de brugte rsh-porte hurtigt nok. Det, at når
der kommer en indgående rsh (på n003 i dette tilfælde), så ser
in.rshd at der ikke er flere ledige porte - også selvom en del af de
optagede porte ikke er i brug længere - og vil blive frigjort lidt
senere.