在 Unix 域套接字而不是网络(假设一台服务器)上运行 memcached 有什么缺点吗?

在 Unix 域套接字而不是网络(假设一台服务器)上运行 memcached 有什么缺点吗?

我正在建立一个 Django 网站以使用 memcached 来缓存其页面。

(每个页面的内容不会经常改变,因此我希望网站的大部分内容大多数时间都由 memcached 提供服务,从而能够相当好地处理大量流量。)

网站和 memcached 都将在一个虚拟服务器上运行,该服务器在 Debian Squeeze 上运行。

鉴于这种设置,我想我可以将 memcached 设置为通过 Unix 域套接字进行监听(请参阅http://code.google.com/p/memcached/wiki/NewConfiguringServer#Unix_Sockets),而不是通过网络接口。虽然我的虚拟服务器有相当广泛的防火墙,因为我只需要 memcached 可供单个本地用户 (即 Django 站点) 访问,但我认为我还是应该限制它。

当 memcached 及其客户端都在同一台服务器上时,让 memcached 通过 Unix 域套接字进行监听有什么缺点吗?例如,Unix 域套接字是否可能比监听 127.0.0.1 更慢?

(抱歉,我问的这个问题比较新手 — — 您可能已经看出来,我之前没有使用过 memcached,也没有使用过 Unix/Linux。)

答案1

通常,unix套接字与网络端口问题分解如下:

Unix 套接字的缺点

仅可本地访问

Unix 套接字的优点

消除 TCP/IP 开销

网络缺点

安全 TCP/IP 开销

网络优势

可以通过网络访问服务

我将其用作几乎所有服务的一般指南,包括 memcached、MySQL 和其他服务。

这过于简单了,但我就是从这里开始。

答案2

如果您仅在本地访问 memecached,建议仅监听本地 IP 地址127.0.0.1或使用 unix 套接字。

即使您拥有防火墙保护的环境,这也是一种很好的做法。想象一下,您将服务器从此网络移出到另一个不受信任的网络。因此,您必须担心保护您的 memcached 端口。

相关内容