Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
SshServer performs auth and idle timeout checks by scheduling a Runnable to disconnect the session when the timeout occurs. Every time new data is received, the task is canceled and a new Runnable is scheduled.
As a result ScheduledExecutorService.schedule is called very frequently and pops up in the profiling hotspots. I've created an alternative implementation that uses a single thread to periodically checks (once every second) all active sessions whether they've timed out.
The performance impact of this change depends on the type of SSH usage. For operations that transfer a lot of data in a short time, the improvement is significant (about 8% in my test).
Pull request: https://github.com/apache/mina-sshd/pull/1
Attachments
Issue Links
- links to