Jean Boussier

Results 329 comments of Jean Boussier

Oh and I forgot, here's a profile of a similar benchmark with about 180 severs: Cold: ``` ================================== Mode: wall(1000) Samples: 3592 (6.04% miss rate) GC: 390 (10.86%) ================================== TOTAL...

Well, while posting the profile I figured that: ``` 54 (12.0%) 54 (12.0%) SSHKit::Backend::ConnectionPool::Entry#expired? ``` Was very sketchy. Turns out according to our monitoring, running migrations very often takes more...

Based on @csfrancis input and also on https://github.com/net-ssh/net-ssh/pull/303, it seems likely that the linear performance comes from a good part of `IO.select` which get slower the more file descriptors it...

~~Quick update, it seems like `idle_timeout` disabling connection pooling entirely is a regression from https://github.com/capistrano/sshkit/pull/298. ~~ Sorry I was wrong.

https://github.com/capistrano/sshkit/pull/327 allow to disable pruning entirely for those interested. I'm still ensure how to reduce the `prune_expired` calls. Maybe with a counter?

By inspecting the profiles, I also discovered that net/ssh waste a lot of CPU parsing the same `known_hosts` files on every connection establishment. I'll try to see if they could...

@TiagoCardoso1983 I tried net-ssh/net-ssh#303 but only got very marginal performance improvements. Is it because the main `select` in `#process` is still not patched?

> OS are you testing it on? OSX, so it's poll-enabled. > Improve this bit would mean rewriting the library, Yeah it's what I figured :disappointed:

net-ssh/net-ssh#308 in itself doesn't fix anything. I'd like to propose one last feature in SSHKit to replace Net::SSH's KnownHost with an alternative implementation that caches the lookup in memory. Would...

> If I open a PR would you be willing to test my branch against your 180 servers? Of course, I'd be happy to.