request.getRemoteAddr()和request.getRemoteHost()


轉自:https://www.cnblogs.com/aizj/p/7593209.html

request.getRemoteAddr()是獲得客戶端的ip地址。
request.getRemoteHost()是獲得客戶端的主機名。

 關於request.getRemoteHost的性能問題

 

  

  在一個業務系統中使用request.getRemoteHost(),會造成使用該方法使用該功能模塊時速度特別慢
   
    (測試功能時發現該功能模塊中對應的域名獲取的是host文件中從前往后第一個與本機IP一致的域名)

解釋如下:
 一個客戶應用,在運行過程中反映出現性能問題,經定位,性能瓶頸出現在應用代碼中的request.getRemoteHost()這一行,執行這一行需要花費大約5秒。通過CTRL+BREAK輸出當前堆棧,發現底層代碼有去作dns查詢的動作java.net.InetAddress.getHostFromNameService(InetAddress.java:532),從而導致慢。




       解決辦法有2個:




       1、將request.getRemoteHost()改為request.getRemoteAddr() 。




       2、提供apusic的優化patch,並在啟動腳本中添加參數。

按方法1修改后並在現場驗證問題已解決,第二種方法沒有試驗有待考證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM