libsoup忽略了负载平衡架构AWS弹性负载平衡器中的DNS TTL



根据此链接http://www.chaseventers.org/2010/09/libsoup-ignores-dns-tns-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;
}

不幸的是,除非汤的对象本身消失,否则该哈希表中的条目永远不会被删除或过期。

这很糟糕的原因:

  1. DNS TTL值被忽略。取而代之的是,DNS查询的结果将永远缓存。显然,这意味着如果记录发生了更改,则需要重新启动LibSoup客户以了解它。

  2. dns负载平衡被libsoup打破了,无论是否包含多个IPS,它都会反复连接到同一IP地址。

因此,Libsoup在负载平衡AWS云环境中表现出令人讨厌的表现。请确认。

您可以迁移到网络加载平衡器,该平衡器提供了一个静态IP地址,而不是解决不同IP的DNS名称,因此,即使库不尊重TTL,它也会赢得''t对您来说是个问题。

最新更新