c++ - getaddrinfo 问题

标签 c++ http sockets proxy benchmarking

我目前正在尝试编写自己的 HTTP 代理。我的代码可以正常工作,但我尝试使用 ApacheBench 对其进行压力测试,发现时不时地收到如下消息:

“getaddrinfo:提供了节点名或服务名,或者不知道主机 en.wikipedia.org 服务 80”

我不明白为什么这个函数调用会在传递主机名和端口的地方失败。

我在网上查找了解决此问题的不同方法,但没有找到任何有用的方法。

有没有人有什么想法?

编辑 通过在我的应用程序中实现 DNS 缓存系统解决了这个问题。

最佳答案

也许您的解析堆栈中的某些内容无法承受您进行的查询量?

您必须从 /etc/nsswitch.conf 开始,然后查看查询是如何在您的系统上解决的。在某些时候,您最终会访问本地 DNS 缓存,如果它同时有太多查询,它也可能会超时。

您可能会发现您需要在您的代理中运行 DNS 缓存(例如 Squid)或在本地使用 lwresd。

关于c++ - getaddrinfo 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706090/

相关文章:

spring - JavaFX 桌面应用程序 - 与 Web 服务的套接字通信

c++ - 如何确定中间包含 "\0"的 std::string 的长度?

java - PoolingClientConnectionManager中的 "per route basis"是什么意思?

http - 使用 mime/multipart 上传会损坏文件

python - Twisted - 将协议(protocol)(和套接字句柄)对象传递给 Twisted 子进程

c - 套接字 API : accept method didn't set sockaddr_in structure

c++ - 怎么能不对 C++ 结构布局做出假设呢?

c++ - 基于策略的设计 : how to customize the Host structure in a proper way?

c++ - 复制构造方法的用法?

delphi - Indy 10 Http 服务器示例