【发布时间】:2018-02-14 03:19:58
【问题描述】:
根据这个链接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 破坏,无论 A 查询的响应中是否包含多个 IP,它都会重复连接到同一个 IP 地址。
所以看起来 libsoup 在负载平衡 aws 云环境中会表现得很糟糕。请确认。
【问题讨论】:
-
libsoup 中的最新代码库似乎包含了这种类型的错误,那么在 libsoup 方面是否有适当的解决方案?
标签: amazon-web-services cloud libsoup