in reply to Net::SSH2 fails under heavy load

The ouptut you're getting with $ssh2->scp_get($old, $new) differs quite markedly from what I get. I'm running with $ssh2->debug(1);, and I gather you're doing the same ?

My particular code segment, which is doing the job fine, is as follows:
for(@files) { $ret = $ssh2->scp_get("$dir/$_", "$_"); print "RET: $ret\n"; }
My @files contains 6 filenames, and the output that segment produces is:
libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 506, ext = 0) - read 506 bytes - read 506 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1 libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 500, ext = 0) - read 500 bytes - read 500 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1 libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 499, ext = 0) - read 499 bytes - read 499 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1 libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 507, ext = 0) - read 507 bytes - read 507 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1 libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 570, ext = 0) - read 570 bytes - read 570 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1 libssh2_scp_recv(ss->session, path, &st) -> 0x3dae38c Net::SSH2::Channel::read(size = 493, ext = 0) - read 493 bytes - read 493 total Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total Net::SSH2::Channel::DESTROY RET: 1
I'm thinking it's the Net::SSH2::Channel::DESTROY that occurs between successive scp_get() calls that might be critical. I'm using Net-SSH2-0.19 (built against libssh2-1.0).

I haven't tried grabbing large numbers of files - and if I did, then faik I might well strike exactly the same problem as you.

Cheers,
Rob

Replies are listed 'Best First'.
Re^2: Net::SSH2 fails under heavy load
by FloydATC (Deacon) on May 25, 2009 at 09:10 UTC
    I get similar results most of the time. It appears to fail quite randomly though, sometimes the channel setup fails and sometimes the read() just hangs silently. Hangs seem to happen more often with scp_get(). The channel/exec method is most granular and so I've managed to get it sort-of-working by re-connecting and re-opening whenever things fail. When this job is done, the code needs to be destroyed for the sake of humanity.