Re: Turning off async resolution at runtime
Daniel Stenberg via curl-library <[email protected]> Mon, 2 Feb 2026 23:19:39 +0100 (CET)
| Newsgroups | gmane.comp.web.curl.library |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 29 Jan 2026, Andrew Bell via curl-library wrote: > I have an application that is making many http requests through curl. Each > request is handled by a thread. On my OS (OSX) there is a default file > descriptor limit of 256. When I make a curl request with curl_easy_perform, > it creates two pipes in addition to creating the socket on which to make the > request. It appears that these pipes are made for communication internal to > curl about async DNS resolution. This means that I'm using three file > descriptors for each request, which means get "out of file descriptor" > errors when my application has ~80 threads making curl requests. The socketpair file descriptors are however only used while name resolving. > It looks like I can disable async resolution at compile-time, which I would > think would eliminate the pipes and associated file descriptors, but I can't > control how the library was built for users. I don't see any way I can > disable this async resolution at runtime, but perhaps I'm missing something. Nope. Because using sync name resolving is terrible and is normally only used as a worst-case fallback. For example: timeouts for sync name resolving is bad, uses signals and is error-prone. It messes up libcurl's ability to work asynchronously. > Does anyone have any ideas/recommendations to eliminate the FDs being used > for DNS resolution or some other ideas on how I can reduce the likelihood of > running out of FDs when using lots of simultaneous requests? I would recommend using the multi interface and avoid threads. It probably also increases performance. -- / daniel.haxx.se || https://rock-solid.curl.dev -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html