Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
How to debug cULR multi handle timeout caused by not writing to socket
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Yongkang Huang via curl-library <curl-library_at_lists.haxx.se>
Date: Tue, 26 Oct 2021 23:57:32 +0000
Hi!
Following the thread I sent previously, now I’m working on an application that structured as the following way
1. A thread holds a static curl multi handle and running as the event base
2. When there’s a user request to do a HTTP call, a easy handle would be created and passing to the thread holding the curl multi handle.
3. The curl multi thread will add the easy handle to the multi handle, and drive the IO with the event base.
4. Once a request finished, return the easy handle to the thread dealing with user request
This model working fine when I do the request sequentially on a single thread with user traffic, but when there’s multiple request scheduled concurrently, there’s a wired bug that the write to a socket would stuck until a timeout finished (tcpdump shows a the tcp stuck on sending the application data instead of waiting for remote ack), usually it’s either the connect timeout we set to connect to proxy, or the total timeout without the connect timeout. For example if the connect timeout is 10s, and total timeout is 30, a lot of request will finished in 10 second or 20 seconds, even waiting indefinitely until the total timeout passed.
Date: Tue, 26 Oct 2021 23:57:32 +0000
Hi!
Following the thread I sent previously, now I’m working on an application that structured as the following way
1. A thread holds a static curl multi handle and running as the event base
2. When there’s a user request to do a HTTP call, a easy handle would be created and passing to the thread holding the curl multi handle.
3. The curl multi thread will add the easy handle to the multi handle, and drive the IO with the event base.
4. Once a request finished, return the easy handle to the thread dealing with user request
This model working fine when I do the request sequentially on a single thread with user traffic, but when there’s multiple request scheduled concurrently, there’s a wired bug that the write to a socket would stuck until a timeout finished (tcpdump shows a the tcp stuck on sending the application data instead of waiting for remote ack), usually it’s either the connect timeout we set to connect to proxy, or the total timeout without the connect timeout. For example if the connect timeout is 10s, and total timeout is 30, a lot of request will finished in 10 second or 20 seconds, even waiting indefinitely until the total timeout passed.
-- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.htmlReceived on 2021-10-27