Heim  >  Artikel  >  PHP-Framework  >  Konfigurationsfehler der Hosts-Datei verursacht Anwendungsverzögerung (Laravel-Sail-Entwicklungsumgebung)

Konfigurationsfehler der Hosts-Datei verursacht Anwendungsverzögerung (Laravel-Sail-Entwicklungsumgebung)

藏色散人
藏色散人nach vorne
2021-06-18 15:47:202636Durchsuche

vorgestellt, um den durch das Problem der Cardon (Laravel-Sail-Entwicklungsumgebung) verursachten Konfigurationsfehler der hsts-Datei vorzustellen. Ich hoffe, dass es für die Freunde in Not hilfreich sein wird! Heute habe ich den Quellcode eines Projekts heruntergezogen und die neue Laravel-Sail-Entwicklungsumgebung verwendet. Die bisherige Homestead-Entwicklungsumgebung ist jetzt nur noch ein Backup. Zuerst verlief alles reibungslos, einschließlich der Abhängigkeitsinstallation, des Containerstarts und der Datenmigration. Dann habe ich den Entwicklungsdomänennamen glücklich in der Hosts-Datei konfiguriert:

127.0.0.1 devocus.test
Öffnen Sie den Browser und besuchen Sie: http://devocus .test: 8016, ich dachte, dass alles gut lief, aber ich stellte fest, dass die Seite immer geladen wurde und es fast 30 Sekunden dauerte, bis die vollständige Schnittstelle geladen war. Ich war auch verwirrt Die verwendete Entwicklungsumgebung Laravel-Sail startet fast immer in Sekundenschnelle. Ist dieses Projekt angeschwollen?

Dann habe ich die Browser-Entwicklertools geöffnet und festgestellt, dass alle Anfragen mehr als 30 Sekunden dauerten. Könnte es sein, dass ich auf ein Datei-E/A-Problem gestoßen bin? Aber mein Projekt ist im Ubuntu-Subsystem platziert. Netzwerkproblem? Die anderen Punkte sind völlig normal. Ich habe jede mögliche Lösung ausprobiert, Dateiberechtigungen geändert, Ladder geschlossen, den Container gelöscht und neu erstellt usw., aber ohne Erfolg.

Also habe ich Telescope installiert und die Details jeder Anfrage überprüft. Auch das Öffnen von Telescope dauerte etwa eine Minute, bis die Telescope-Schnittstelle endlich geladen wurde. Aber die Abfrageergebnisse haben mich sehr überrascht: http://devocus.test:8016,本以为一切顺利,但是却发现页面一直处于加载状态,隔了差不多 30 秒才将完整的界面加载出来,我百思不得其解,其他几个项目我都是用的 Laravel-Sail 开发环境,几乎都是秒开,这个项目是肿么了?

然后我打开浏览器开发者工具,发现所有的请求都需要 30 秒以上,难道遇到了文件 IO 问题?但是我项目是放在 Ubuntu 子系统中的呀。网络问题?那其他几个项目又完全正常呀。我尝试着各种可能的解决办法,改文件权限、关闭ladder、删除并重新创建容器等等,一顿折腾下来,毫无结果。

于是安装了 Telescope,查看每个请求的详细情况,打开 Telescope 速度也非常慢,我等待了大概一分钟,Telescope 的界面终于加载出来了。但是查询结果令我非常意外:

记一次 hosts 文件配置错误导致的应用卡顿问题

Telescope 显示,每个请求的处理速度都很快,数据查询也很快,我佛了…

于是找同事的电脑试一下,开发环境都是 Laravel-Sail 没想到他的电脑上访问也同样十分缓慢,这直接将我们的思维引导到 “项目代码有问题” 这个方向上,于是我花了一上午时间仔细对比检查各种配置文件、env文件,升级了 laravel 以及各种依赖的版本。但是当我每次满怀期待的在浏览器打开应用时,还是卡的让我怀疑人生,而且日志记录一切正常。然后使用搜索引擎尝试搜索这个问题的解决方案,中文搜索、英文搜索都没有结果。一个上午过去了,还是没有搞定这个问题,甚至一股绝望感涌上心头。

最后还是决定去吃午饭,先让自己放松下来。吃完饭回来的路上,我又一次思考这个问题,脑袋里各种搜索出来的答案一条一条闪过,突然一个单词从我眼前“飞过”:hosts
回到工位上我打开电脑,想着先用 ip 直接访问应用看看情况,于是在浏览器输入http://127.0.0.1:8016,界面被急速打开,我大概有点眉目了,于是打开 hosts 文件,想着换个域名试试:

# 127.0.0.1 devocus.test
127.0.0.1 ifocus-dev.test

然后打开浏览器,输入http://ifocus-dev.test:8016,应用被快速打开,非常流畅,问题就这样莫名其妙的解决了。
但是问题出在哪里呢?我再次打开 hosts 文件,仔细检查,发现之前做过的同一个域名的解析静静地躺在 hosts 文件里面,我将开发环境由 Homestead 迁移到 Laravel-Sail时,忘记修改 hosts 文件了:

...
192.168.10.10 devocus.test
...
# 127.0.0.1 devocus.test
127.0.0.1 ifocus-dev.test

在 hosts 文件中,同一个域名解析到两个 ip 会发生什么情况呢?我去搜索引擎上搜索了一下,找到了答案:

电脑在hosts文件中是由上往下查找 IP,相同的域名取第一个 IP,如果第一个IP受阻,那么会转向第二个IP,乃至第N个,但是这种方式达不到负载均衡的效果,但可以增大打开网站的几率。

由于我将 devocus.test解析到了两个IP地址:192.168.10.10 及127.0.0.1,当我在浏览器中打开http://devocus.test

Merken Sie sich eine Hosts-Dateikonfiguration Fehler Die durch „/>🎜🎜Telescope verursachte Anwendungsverzögerung zeigte, dass die Verarbeitungsgeschwindigkeit jeder Anfrage sehr schnell war und die Datenabfrage auch sehr schnell war. Ich war erstaunt ... 🎜🎜Also habe ich es auf dem Computer eines Kollegen ausprobiert. Die Entwicklungsumgebung war Laravel. Sail hatte nicht damit gerechnet, dass der Zugriff auf seinem Computer ebenfalls sehr langsam war, was uns direkt in die Richtung „Es gibt ein Problem mit dem Projektcode“ führte, also verbrachte ich den ganzen Morgen damit, sorgfältig zu vergleichen und Überprüfen verschiedener Konfigurationsdateien, Env-Dateien und Aktualisieren von Laravel und verschiedenen abhängigen Versionen. Aber jedes Mal, wenn ich mit großen Erwartungen die Anwendung im Browser öffne, friert sie immer noch ein und lässt mich an meinem Leben zweifeln, und die Protokollaufzeichnungen sind alle normal. Versuchen Sie dann, nach einer Lösung für dieses Problem zu suchen. Bei der Suche auf Chinesisch oder Englisch werden keine Ergebnisse angezeigt. Ein Morgen verging, und ich hatte dieses Problem immer noch nicht gelöst, und sogar ein Gefühl der Verzweiflung überkam mich. 🎜🎜Schließlich beschloss ich, zum Mittagessen zu gehen, um mich zunächst zu entspannen. Auf dem Rückweg vom Abendessen dachte ich noch einmal über diese Frage nach. Verschiedene Antworten, die ich in meinem Kopf suchte, blitzten nacheinander auf, und plötzlich „flog“ ein Wort vor meinen Augen: <code>Gastgeber</code>. <br/>Als ich an meinen Arbeitsplatz zurückkehrte, schaltete ich den Computer ein und dachte darüber nach, über IP direkt auf die Anwendung zuzugreifen, um die Situation zu sehen, also gab ich <code>http://127.0.0.1:8016</code> ein Der Browser öffnete sich und die Oberfläche wurde schnell angezeigt. Ich war wahrscheinlich etwas verwirrt, also öffnete ich die Hosts-Datei und überlegte, einen anderen Domainnamen auszuprobieren: 🎜rrreee🎜 Dann öffnete ich den Browser und gab <code>http:/ ein. /ifocus-dev.test:8016</code>, und die Anwendung wurde schnell und reibungslos geöffnet und das Problem wurde auf unerklärliche Weise gelöst. <br/>Aber was ist das Problem? Ich öffnete die Hosts-Datei erneut, überprüfte sie sorgfältig und stellte fest, dass die Auflösung desselben Domänennamens, die ich zuvor vorgenommen hatte, stillschweigend in der Hosts-Datei lag. Als ich die Entwicklungsumgebung von Homestead nach Laravel-Sail migrierte, vergaß ich, sie zu ändern hosts-Datei: 🎜rrreee🎜 Was passiert in der hosts-Datei, wenn derselbe Domänenname in zwei IPs aufgelöst wird? Ich habe in der Suchmaschine gesucht und die Antwort gefunden: 🎜<blockquote>🎜Der Computer sucht von oben nach unten in der Hosts-Datei. Nehmen Sie für denselben Domainnamen die erste IP Es wird auf die zweite IP oder sogar die N-te IP umgeschaltet. Diese Methode kann jedoch keinen Lastausgleichseffekt erzielen, kann aber die Wahrscheinlichkeit erhöhen, dass die Website geöffnet wird. 🎜</blockquote>🎜Da ich <code>devocus.test</code> auf zwei IP-Adressen geparst habe: 192.168.10.10 und 127.0.0.1, wenn ich beim Testen <code>http://devocus</code> öffne Ich habe zuerst auf 192.168.10.10 zugegriffen, aber da mein Homestead geschlossen war, muss dieser Vorgang etwa 30 Sekunden gedauert haben, und dann hat das System weiter nach anderen IPs in der Hosts-Datei gesucht, diese gefunden und darauf zugegriffen Die Webseite wurde nur unter 127.0.0.1 geöffnet. Da jede Anfrage diesen Prozess durchlaufen muss, habe ich das Gefühl, dass das System sehr feststeckt. Zu diesem Zeitpunkt ist das Problem, das mich beunruhigte, gelöst. 🎜<p>Bei der Entwicklung von Projekten muss jeder diesen subtilen Problemen mehr Aufmerksamkeit schenken. Kleine Probleme können oft große Probleme verursachen. Selbst ein selbstgerechter Veteran wie ich fällt in eine tiefe Grube. Die Softwareindustrie ist eigentlich eine praktische Branche, in der man ständig auf Gruben treten, Gruben graben und Gruben füllen muss. </p><p>Aber nachdem ich darüber nachgedacht habe, wäre ich möglicherweise noch beunruhigter, wenn ich zu diesem Zeitpunkt die Homestead-Umgebung geöffnet hätte. <span class=                                                                                                                                         

Das obige ist der detaillierte Inhalt vonKonfigurationsfehler der Hosts-Datei verursacht Anwendungsverzögerung (Laravel-Sail-Entwicklungsumgebung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen