[ https://issues.apache.org/jira/browse/SSHD-742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15981406#comment-15981406 ]
Goldstein Lyor commented on SSHD-742: ------------------------------------- Before we can answer this rather general issue there are several key issues that need to be clarified: {quote} Is there any way I can improve the performance? {quote} Any specific part of SSHD ? The _Java Flight Recorder_ report you mention seems to be related to the shell, but SSH is much more than that - e.g., command channel, SFTP, SCP. Is there a particular area of performance you are interested in ? {quote} the throughput was particularly low - 2400 requests per second {quote} Please be specific - what are these "requests" you measure ? What cipher are you using ? Are you using compression ? {quote} The documentation is kinda sparse {quote} It is actually quite detailed - perhaps is lacks emphasis on what interests you - if so, please specify what is missing so we can complete it. In any case, there are many (many, many.,..) configuration parameters that can be used to tweak the performance, but unless a specific performance metric and/or target use-case is indicated it is difficult to advise on which parameters to concentrate and how to tweak them. {quote} I was quite disappointed because the throughput was particularly low {quote} "Low" compared to what benchmark ? What exact environment were you using - O/S, Heap memory size, GC configuration, concurrent NIO threads, which I/O factory ? etc., etc.. I have reviewed the code and there are many issues that adversely affect performance in the way the server/client are set-up - here are jst a few {code:java|title=Server} ExecutorService threadPool = Executors.newSingleThreadExecutor(); // used to run commands but only one at a time server.setNioWorkers(1); // severly limits throughput // Exit callback not propagated to the MessageReceiver and thus channel is not closed as it should be - clearly documented as a requirement: "Once the command is done, it should call the ExitCallback#onExit method to indicate that it has finished" @Override public void start(Environment environment) { threadPool.submit(new MessageReceiver(input, output, MESSAGE_SEPARATOR, payload)); } {code} {code:java|title=Client} // Should be inside a try-with-resource block ClientChannel channel = session.createChannel(Channel.CHANNEL_SUBSYSTEM, "messaging"); channel.open(); // not the proper way to open a channel {code} > Are there any ways to improve performance? > ------------------------------------------ > > Key: SSHD-742 > URL: https://issues.apache.org/jira/browse/SSHD-742 > Project: MINA SSHD > Issue Type: Question > Affects Versions: 1.4.0 > Environment: https://github.com/maseev/sshd-echo > Reporter: Miron Aseev > Priority: Minor > > I created a simple client-server application (see the environment section) > that uses MINA SSHD library, just to test the performance. I was quite > disappointed because the throughput was particularly low - 2400 requests per > second on average on localhost. > According to Java Flight Recorder, the application spends most of its time in > ChannelPipedInputStream/ChannelPipedOutputStream on different monitor objects. > Is there any way I can improve the performance? The documentation is kinda > sparse and doesn't mention any tuning suggestions. Maybe I can avoid using > these piped streams somehow or set some parameters related to the transport > layer? > All suggestions are greatly appreciated. -- This message was sent by Atlassian JIRA (v6.3.15#6346)