Comments (4)
@RizziMau, it may be that the problem is when the server is waiting for the "Done" from the client. However, since the client already terminated, the control socket should not be available already between the processes and the server should have failed / timeout. Therefore, it is not clear why the server did not end.
In any case, few questions:
- Just to make sure. The failed log is reverse test (
-R
) and the success log non-reverse. Is this because that all the reverse tests have this error? - Again, to make sure, is the client version also 3.16?
- Can you recreate a failed log (using
--debug=3
), but now try running the client few time when the server is stuck (before terminating it). When the client display thethe server is busy running a test
message, the server should displaysuccessfully sent ACCESS_DENIED to an unsolicited connection request during active test
? Does the server display thiese messages? (Running the client few times is to make sure that some of the server messages will be displayed, as they are not flushed. - When the test is running there should be 5 server threads - the main thread and one for each of the 4 streams. When the server got stuck:
- Are all the 5 threads still running?
- How much CPU each of them consumes?
- Are you able to build iperf3 executable for the server (Linux)? I am asking in case it will be useful to create special versions that may help the analysis (usually with more debug messages).
from iperf.
@RizziMau, I believe I understand what is the problem ("DONE" state sent by the client is not received by the server and the server is waiting for it forever). I have a proposed fix for the problem, using the --rcv-timeout
value as the timeout for waiting. Before I submit a PR for the fix, it would be very helpful if you can test at least the server side of it, to confirm that indeed this is a fix for the problem.
Can build and run iperf3 for the server (at least) from branch "issue-1735-timeout-select-when-not-in-running-state" in "https://github.com/davidBar-On/iperf.git" (git clone https://github.com/davidBar-On/iperf.git -b issue-1735-timeout-select-when-not-in-running-state
)?
from iperf.
@davidBar-On, I'm testing your iperf3 version, I will keep you update.
Just a remark:
for this issue it's better to use the --rcv-timeout
parameter, or it's better to add a new parameter, e.g. --done-timeout
or --close-timeout
?
Iperf3 has different timeouts for different aspects:
--idle-timeout
to restart iperf server when in idle--connect-timeout
for establishing the control connection--rcv-timeout
for data reception during data transfers
I think it would be preferable to use a specific timeout parameter for the closure of the control connection.
from iperf.
@RizziMau, thanks for testing the change. It would help validating it in general (and of course finding if it solves your issue).
Regarding the use of --rcv-timeout
. The iperf3 teams does not like to add new options. Therefore, for having a better chance that the change will be merged into mainline, I try to reuse existing options when possible.
Currently the --rcv-timeout
value is used only when test data is sent (TEST_RUNNING
state). Usually, its value is probably related to the length of "network stuck" periods (except for very low test bandwidth, e.g. sending a packet once in every 10 seconds). Therefore, I believe that this value can also be used for the timeout of receiving control messages when test data is not sent.
Note that regardless of the option name, the change implements timeout for most of the state-change control messages. I believe it solves a general issue in iperf3 that server/client are getting stuck if a control message is not received (your issue is one example).
from iperf.
Related Issues (20)
- iperf3 3.17 versioning problem HOT 2
- Improve Handling of PKCS1 Padding Fix
- is it necessary to start the client workers after it enter TEST_RUNNING state HOT 2
- [suggestion] coding style consistent issue
- High UDP packet loss, compare with nuttcp
- the appropriate timing for creating threads as a receiver
- Best practice to compile and debug iperf's code on Linux?
- How to use the iperf library to obtain bandwidth information in real-time at intervals? HOT 4
- Queries about Measurement Issues with iPerf3 in UDP Tests HOT 4
- JSON data is output twice (starting in 3.16?) HOT 2
- 10gbit iperf3 shows like half speed but files copying is fine HOT 4
- support for 64bit fq-rate
- Add RTT to Sum when using JSON
- Include RTT information in SCTP tests `--json` as well
- Need help in iperf command for sending the IPv6 multicast traffic on Ubuntu HOT 2
- My_Hostname HOT 2
- Error in protocol details on wiki HOT 2
- Support affinity/pinning of parallel flows to different CPUs HOT 1
- [feature] Would like to support keeping the phone screen never turned off during speed tests HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iperf.