本地開發伺服器在 192.168.0.* 上慢於 localhost
我想將我的開發站點暴露給家裡的更多電腦。我發現通過像 192.168.0.198 這樣的內部 ip 訪問它與訪問 localhost 相比非常慢。
我寧願訓練自己調試這些情況,因為可能沒有一個答案。
伺服器正在為靜態內容執行 nginx,為動態 django 生成的 html 重定向到 apache (127.0.0.1:8888)。我還在為數據庫和搜尋索引以及 memcache 執行 postgresql 和 solr。
我的 django settings.py 文件列出了 127.0.0.1 和 192.168.0.198 作為內部 ips。數據庫後端是為 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 之間的確切區別是什麼,這些不同的 ips 如何與網路基礎設施互動(在我的例子中,蹩腳的 dlink 路由器)。此外,還有各種系統,如 solr 和 postgresql,我不確定要使用的 ip。
目標是配置這些區域,以便我走在通往水平可擴展性的正確道路上——這意味著 127.0.0.1 可能不會是我的數據庫/搜尋索引所在的位置。
我在這裡沒有完整的答案 - 而是一些關於我開始尋找的提示……
通常不會通過網路發送對您自己 IP 地址的訪問,例如您的路由器不應該參與其中。可能涉及一些反向查找,但這似乎是通過您的主機文件處理的……
關於您的 /etc/hosts,我沒有看到 192.168.xx 被分配給名稱 localhost - 那是機器名稱或您希望機器回复的任何別名。
另外,你可以試試如果
route route -n
產生一些計時結果 - 例如,第一個命令執行反向查找,第二個不執行。
什麼似乎不是你的問題,但相關:
當 IP 地址無法解析時,我遇到了一些速度問題 - 例如,反向 DNS 查找或適當的 /etc/hosts 文件可能會有所幫助。在這種情況下,原因通常是一些日誌記錄,其中執行主機名查找時會在無法解析 dns 時超時。在無法解析客戶端地址(而不是:名稱)的機器上進行 ssh 登錄時尤其如此。