EldoS | Feel safer!

Software components for data protection, secure storage and transfer

SFTP performance with ActiveX

Also by EldoS: Solid File System
A virtual file system that offers a feature-rich storage for application documents and data with built-in compression and encryption.
#433
Posted: 06/12/2006 14:11:34
by Jeff Lindborg (Basic support level)
Joined: 06/12/2006
Posts: 26

Hello all.

I'm using the SFTP client with VB 6 (ActiveX) applications and I'm struggling with file transfer performance. It's taking a very, very long time to download files of any size (order of magnitude longer than it takes using, say, SSH Secure Shell). Wandering through the help file there's an article in there on optimizing performance, however all the items it references seem not to be implemented in the ActiveX version of the tool. There is no PipelineLength property for the simple SFTP client and there is no DownloadBlockSize or UploadBlockSize exposed for it either - further the help file links to those topics are broken, but I'm assuming they note that it's "not implemented" for the ActiveX version since they are, indeed, not exposed off the object.

I've tried fiddling with compressing and I've made sure I have a legit license installed (I'm getting no nag screens and I've use the sample provided by Eldos with the purchased license string I received) and I've tried reading bigger blocks of the file when uploading or downloading files. All of this makes very little difference.

By way of reference, moving a 6 meg binary file from a remote Linux machine (over gigabit network) to my local Windows test box takes a little better than 4 seconds using SSH Secure Shell. Using the sample application (with or without modifications to chunk size and compression) with the ActiveX version of the library that's been registered takes a whopping 70 seconds!!

I hope I'm missing something really, really big here but I can't figure out what it is. I've checked and rechecked that I have the proper full license string in the app properly and using ActiveX I can't seem to do any of the things the help file talks about to improve this.

Can someone help out?

thanks

-Jeff
#439
Posted: 06/13/2006 11:56:30
by Jeff Lindborg (Basic support level)
Joined: 06/12/2006
Posts: 26

Well, continuing to bang heads with this. Part of the problem is the documentation for the SFTP components seems to be flawed and incomplete and the online version differs quite a bit from the HTML version that installed with the evaluation version I've been testing - however both are wrong.

For example - the HTML version that installed with version 4.4.89 indicates that the TElSimpleSftpClient contains properties for DownloadBlockSize, UploadBlockSize and SftpBufferSize. This does not appear to be the case and links to those topics are broken in the help off every link I can find. Presumably these were changed/depricated/something and the help was not fully updated.

Now searching on the online version of help, I find this interesting topic: http://www.eldos.com/documentation/sbb/documentation/ref_cl_simplesftpclient_prp_transferblocksize.html

It indicates there is a TransferBlockSize property off the ElSimpleSFTPClient object and that it's implemented for ActiveX. Cool! But no... there is not such a property available and looking at the code sample in the help it notes this:

HRESULT _stdcall IElSimpleSftpClientX2.TransferBlockSize([in] unsigned long Value );

Eh? IElSimpleSftpClinetX2? I only have IElSimpleSftpClientX registeed on my box and it contains no TransferBlockSize exposed - is this X2 an updated version? In another package?

Am I just chasing my tail here? I simply can't believe the out of the box performance for the registered version of the SFTP package is so slow and there doesn't seem to be an easy way for me to do anything about it... I've opened a ticket and posted here and there doesn't seem to be much in the way of help coming my way. Should I just move on?
#441
Posted: 06/13/2006 17:44:41
by Ken Ivanov (EldoS Corp.)

You are right, the download speed of ElSimpleSFTPClientX is quite slow with some servers. We are working on the problem now; hope to publish a working solution in several days.

Quote
Wandering through the help file there's an article in there on optimizing performance, however all the items it references seem not to be implemented in the ActiveX version of the tool.

Yes. ActiveX version is a bit behind VCL and .NET editions. This approach is caused by requirements of COM. It is quite inefficient to introduce a new interface each time a couple of new methods are added to a component.

Moreover, PipelineLength and Download/UploadBlockSize properties are low-level and may produce different results for different servers. Our goal is to let ElSimpleSFTPClient adjust their values automatically (depending on server configuration) in order to achieve the best perfomance. As I said, we are working on this at the moment.

Quote
For example - the HTML version that installed with version 4.4.89 indicates that the TElSimpleSftpClient contains properties for DownloadBlockSize, UploadBlockSize and SftpBufferSize. This does not appear to be the case and links to those topics are broken in the help off every link I can find

Thank you for pointing us at this. Will be fixed.

Quote
I only have IElSimpleSftpClientX registeed on my box and it contains no TransferBlockSize exposed - is this X2 an updated version? In another package?

IElSimpleSftpClientX2 is a descendant of IElSimpleSftpClientX. It is defined in the same library, SFTPBBoxCli.dll. This interface can be accessed in the following way:

Dim Intf as IElSimpleSftpClientX2
Set Intf = ElSimpleSftpClientObj

But... IElSimpleSftpClientX2 interface does not contain a TransferBlockSize property. It's just another annoying error in the documentation :(.

Quote
...and there doesn't seem to be an easy way for me to do anything about it...

Yes -- just to wait. The build update that improves the speed of SFTP transfers is expected to be published in about a week.

We are really sorry for disappointing you.
#442
Posted: 06/13/2006 17:50:13
by Jeff Lindborg (Basic support level)
Joined: 06/12/2006
Posts: 26

ok - that's cool - as long as you guys know there's a problem and are working on it, I'll hang tight and just work on the rest of my application framework for the time being.

thanks much

-J
#481
Posted: 06/19/2006 11:32:37
by Mike Scriven (Standard support level)
Joined: 05/19/2006
Posts: 102

Does this problem also affect ElSimpleSSHClient? I'm experiencing very poor performance using this with my telnet client when sending keystrokes to the host one character at a time. PuTTY is about 5 times faster!
#491
Posted: 06/19/2006 15:38:26
by Eugene Mayevski (EldoS Corp.)

The speed "issues" are only related to large data transfers. If you send characters one by one, then it's quite hard to determine the actual speed difference - many factors affect it. How do you know that putty is about 5 (and not 2 and not 10) times faster with a single keypress, which takes about 10-50 msec to send?


Sincerely yours
Eugene Mayevski
#492
Posted: 06/19/2006 16:43:37
by Mike Scriven (Standard support level)
Joined: 05/19/2006
Posts: 102

The problem appears to be in the SendData method. I have put timed trace statements around the call to CElSimpleSSHClient::SendData and it takes exactly 1 second to return from SendData. Could this be because I'm using an evaluation key?

Also, when sending a single character to the host I see that two separate packets are sent - a 24 byte packet and a 20 byte packet. Would it be possible to combine these two packets?
#493
Posted: 06/19/2006 16:52:59
by Ken Ivanov (EldoS Corp.)

Quote
Could this be because I'm using an evaluation key?

Yes, exactly. TElSSHClient.SendData() method contains an intentional delay of 1 second.

You can request a time-limited license key which removes the delays of the evaluation version (but expires after certain period of time). Please create a corresponding ticket in our helpdesk system (http://www.eldos.com/support/ticket_list.php) to get the key.

Quote
Also, when sending a single character to the host I see that two separate packets are sent - a 24 byte packet and a 20 byte packet. Would it be possible to combine these two packets?

This will not result in speed improvement. During our tests (related to solving SFTP speed problem) we tried to send these two packet parts as a single data block. The detected speed was absolutely the same as if the parts were sent separately.
#559
Posted: 06/28/2006 10:43:39
by Jeff Lindborg (Basic support level)
Joined: 06/12/2006
Posts: 26

Any progress on this? I saw the posts about the new 4.4.90 version, but I noticed nothing in the release notes about the ActiveX version - I downloaded and installed it anyway and ran some tests on large files again. A 6 meg file still takes well over 40 seconds whereas Secure File Transfer client takes around 4 to 5 seconds.

Were the speed improvements not updated for ActiveX? I can't seem to adjust the perfromance settings documented in the help for ActiveX so I assume if it's not fast "out of the box" I'm out of luck.
#561
Posted: 06/28/2006 11:00:30
by Ken Ivanov (EldoS Corp.)

The corresponding build update for ActiveX edition was also published a few days ago. Most likely, the slowdowns you are having are caused by the evaluation license key. We can provide you a time-limited license key that removes the delays of the evaluation version. Please create a ticket in our helpdesk system (http://www.eldos.com/support/ticket_list.php) so that we could provide you the time-limited key.
Also by EldoS: CallbackDisk
Create virtual disks backed by memory or custom location, expose disk images as disks and more.

Reply

Statistics

Topic viewed 10552 times

Number of guests: 1, registered members: 0, in total hidden: 0




|

Back to top

As of July 15, 2016 EldoS Corporation will operate as a division of /n software inc. For more information, please read the announcement.

Got it!