本地开发服务器在 192.168.0.* 上与 localhost 相比速度较慢

本地开发服务器在 192.168.0.* 上与 localhost 相比速度较慢

我想将我的开发网站展示给家里的更多计算机。我发现通过内部 IP(如 192.168.0.198)访问该网站比访问 localhost 慢得多。

我宁愿训练自己一些如何调试这些情况,因为可能不只有一个答案。

服务器运行 nginx 来处理静态内容,重定向到 apache (127.0.0.1:8888) 来处理动态 django 生成的 html。我还运行 postgresql 和 solr 来处理数据库和搜索索引以及 memcache。

我的 django settings.py 文件将 127.0.0.1 和 192.168.0.198 列为其内部 IP。DB 后端配置为 localhost。memcached 和 solr 后端配置为 127.0.0.1。

我的 /etc/hosts 文件如下所示:

127.0.0.1       localhost localhost
192.168.1.198   localhost
127.0.1.1       jacob-desktop
127.0.0.1       redmine

(在我安装 nginx 之前,我一直使用基于名称的虚拟主机访问我的 redmine 项目管理系统 - 这就是它的用途)。

有趣的是,访问静态主页似乎比访问具有 DB/memcached/solr 访问的后续页面要快得多。

我的许多困惑都源于 localhost/192.168.0.198/127.0.0.1 之间到底有什么区别,这些不同的 ip 如何与网络基础设施(在我的情况下是糟糕的 dlink 路由器)交互。此外,还有各种系统,如 solr 和 postgresql,我不确定我想使用的 ip。

目标是配置这些区域,以便我走上水平可扩展性的正确道路 - 这意味着 127.0.0.1 可能不会是我的数据库/搜索索引所在的位置。

答案1

我在这里没有完整的答案 - 而是一些关于我应该开始寻找的地方的提示......

通常情况下,访问您自己的 IP 地址不会通过网络发送,例如您的路由器不应参与其中。可能涉及一些反向查找,但这似乎是通过您的主机文件处理的...

关于您的 /etc/hosts,我没有看到 192.168.xx 被分配给名称 localhost - 这是机器名称或您希望您的机器回复的任何别名。

另外,你可以尝试

route
route -n

产生一些时间结果 - 例如第一个命令执行反向查找,第二个命令不执行。

以下似乎不是您的问题,但与之相关:

当 IP 地址无法解析时,我遇到了一些速度问题 - 例如,反向 DNS 查找或适当的 /etc/hosts 文件可能会有所帮助。这种情况的原因通常是某些日志记录执行了主机名查找,当 DNS 无法解析时超时。在无法解析客户端地址(而不是名称)的机器上使用 ssh 登录时尤其如此。

答案2

一般情况下在一台机器上最好使用 lo0 而不是外部接口,因为:

  • Loopback 的 MTU 更高 - 16436
  • Loopback 不使用任何硬件驱动程序,例如 e1000(Linux)或 em0(FreeBSD)
  • 环回传输数据时跳过一些 OSI 级别
  • Loopback 有时不使用有缺陷的功能,如 TSO、LRO 等
  • 即使接口上的链路断开,环回也始终处于开启状态

相关内容