-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Seash upload timeouts #63
Comments
See also nodemanager's issue #81 |
r4504 seems to solve the "recv() timed out" problem. The opens the connection from seash to node only after the data to be sent is signed, and thus keeps then connection from idling (which raised the chance of a timeout happening). |
Here's a suggestion for a possible workaround: Implement a set maxparallelism command in seash similar to the set uploadrate and set timeout commands of #892 / r4035. This would set the number of parallel worker threads seash spawns, and could thus either speed up operations if you have large groups of distinct nodes, or let you work more slowly on groups where uploads fail due to contention timeouts. |
Thanks to Alan's support, one third of the work is already done: Find attached a patch that introduces the set maxthreads command in seash as a last resort. As I said, two thirds of the work still lie ahead: Unit tests, and meaningful documentation for the end user. |
Are we sure this will fix the problem? Has this been verified? |
I will check this with my usual set of tools (slow node with multiple vessels, tcpdump), and Alan probably has checked it already. I won't commit before I'm sure this solves the problem. If you want a "more correct" solution instead of a workaround to what I'd consider a rare problem anyway, see my comment above on rearranging the vessel list. |
Seash sometimes times out on uploads. We've done a number of packet traces on the host running seash, and here is what we've found out:
You can categorize three types of errors:
The recv() issue was tackled in #971 and thought to be solved by speeding up the crypto parts of the communication between node manager and seash (parts of which remain to be improved, see #990). The packet traces show a typical string of events leading to this error:
I've also seen "show files" fail with a recv() timeout, but this is rare. Surprisingly, the timeout is 10 seconds there.
The send() issue manifests like this:
session_sendmessage
, which usestimeout_socket
s.Both recv() and send() issues happen even if I increase seash's timeout (see #892). I tried 90 seconds, but would have had to use 300 or so for the slowest nodes.
I checked with CoMoN -- all of the nodes that produced errors had a high load average, and those with the highest numbers had the most persistent ones. This might hint at how to reproduce the problem on a node where we can locally trace node manager packets.
The text was updated successfully, but these errors were encountered: