6
我正在運行一個Beego應用程序,它依靠/ etc/hosts中的更新(通過Docker鏈接)來查找其他服務器。/etc/hosts更新正常,但應用程序不會使用新主機,除非重新啓動或等待時間過長。在查看src/net/hosts的文檔後,它看起來像鎖定了5分鐘的刷新時間。有沒有辦法強制刷新主機?
有沒有辦法強制這個緩存刷新,或者我看錯了這個問題?
我正在運行一個Beego應用程序,它依靠/ etc/hosts中的更新(通過Docker鏈接)來查找其他服務器。/etc/hosts更新正常,但應用程序不會使用新主機,除非重新啓動或等待時間過長。在查看src/net/hosts的文檔後,它看起來像鎖定了5分鐘的刷新時間。有沒有辦法強制刷新主機?
有沒有辦法強制這個緩存刷新,或者我看錯了這個問題?
The hosts file cache time in Go was shortened to 5 seconds. Go的行爲與使用純Go(默認值,帶例外)還是Cgo解析器不同。爲了避免純Go解析器的Go內部緩存,除強制Cgo解析器之外,目前沒有其他辦法。
There are various ways to force Go to use the Cgo resolver.way to force Go to use the Cgo resolver suggested by the documentation是將環境變量GODEBUG
設置爲netdns=cgo
。
我沒有看到沒有組裝的方式。 – thwd
我可以在src/net/hosts.go中更改超時常量,然後滾動我自己定製的內部版本,但必須有另一種方式。很高興看到我不是唯一一個,但堅持在這一個。 – Diablojoe
通常情況下,動態更改應該通過另一種機制完成,如dns或其他配置數據庫。如果您在啓用cgo的情況下構建二進制文件,它將使用系統解析程序來查找主機(這也不能保證系統在短時間內不會緩存它,但在大多數情況下通常少於5分鐘) – JimB