我正在建立一个 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 端口。