根据此链接http://www.chaseventers.org/2010/09/libsoup-ignores-dns-ttls.html
libsoup 中的代码 /* 需要锁定 host_lock */
static SoupSessionHost *
get_host_for_uri (SoupSession *session, SoupURI *uri)
{
SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
SoupSessionHost *host;
host = g_hash_table_lookup (priv->hosts, uri);
if (host)
return host;
host = soup_session_host_new (session, uri);
g_hash_table_insert (priv->hosts, host->uri, host);
return host;
}
不幸的是,除非 SoupSession 对象本身消失,否则此哈希表中的条目永远不会被删除或过期。
这很糟糕有几个原因:
DNS TTL 值被忽略。相反,DNS 查询的结果会被永久缓存。显然,这意味着如果记录发生更改,则需要重新启动 libsoup 客户端才能了解它。
DNS 负载平衡被 libsoup 破坏,它会重复连接到同一个 IP 地址,而不管对 A 查询的响应中是否包含多个 IP。
所以看起来 libsoup 在负载平衡 aws 云环境中会表现得很糟糕。请确认。