我想把我的开发网站暴露给家里更多的电脑。 我发现,通过像192.168.0.198这样的内部IP访问它比起本地主机来说是非常慢的。
我宁愿训练自己一点点debugging这些情况,因为可能没有一个单一的答案。
服务器运行nginx的静态内容,redirect到Apache(127.0.0.1:8888)为dynamicDjango生成的HTML。 我也运行postgresql和solr数据库和search索引以及memcache。
我的django settings.py文件列出了127.0.0.1和192.168.0.198,因为它是内部ips。 DB后端configuration为localhost。 memcached和solr后端configuration为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
(我正在使用基于名称的虚拟主机访问我的redmine项目pipe理系统,直到我安装了nginx – 就是这么做的)。
有趣的是,访问静态主页的速度似乎比具有DB / memcached / solr访问的后续页面快得多。
很多我的困惑源于localhost / 192.168.0.198 / 127.0.0.1之间的区别究竟是什么,这些不同的ip如何与networking基础设施(在我的情况下,糟糕的dlink路由器)进行交互。 此外,有不同的系统,如solr和postgresql,我不知道我想要使用的IP。
我们的目标是configuration这些区域,以便我能够实现水平可伸缩性的正确path – 这意味着127.0.0.1可能不会在我的db / search索引所在的位置。
我在这里没有一个完整的答案 – 而是一些暗示,我会在哪里开始看…
通常访问你自己的IP地址不是通过networking发送的,例如你的路由器不应该涉及。 可能会有一些反向查找,但似乎通过您的主机文件处理…
关于你的/ etc / hosts,我还没有看到192.168.xx被分配给localhost这个名字,而是机器的名字或你希望机器回复的别名。
另外,你可以尝试如果
route route -n
产生一些计时结果 – 例如,第一个命令执行反向查找,第二个不执行反向查找。
什么似乎不是你的问题,而是相关的:
当IP地址无法parsing时,我遇到了一些速度问题 – 例如反向DNS查询或合适的/ etc / hosts文件都可以提供帮助。 在这种情况下,原因通常是某些日志logging,在dns无法parsing的情况下执行主机名查找超时。 在客户端地址(而不是:名称)无法parsing的机器上使用sshlogin时尤其如此。
一般情况下,在一台机器上,最好使用lo0而不是外部接口,因为: