转自: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修改后并在现场验证问题已解决,第二种方法没有试验有待考证。

转载于:https://www.cnblogs.com/sharpest/p/7546460.html

request.getRemoteAddr()和request.getRemoteHost()相关推荐

  1. 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squi...

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  2. request.getParameter() 和request.getAttribute() 区别

    request.getParameter() 和request.getAttribute() 区别 getParameter 是用来接受用post个get方法传递过来的参数的. getAttribut ...

  3. Request、Request.Form和Request.QueryString的区别

    Request.Request.Form和Request.QueryString的区别 Request.Form:获取以POST方式提交的数据(接收Form提交来的数据): Request.Query ...

  4. request.getServletPath()和request.getPathInfo()用法

    为什么80%的码农都做不了架构师?>>>    在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.getServletP ...

  5. django之视图系统 views.py--主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)...

    django之视图系统 views.py-->主要内容(FBV和CBV.dispath.request对象和request.FILES.JsonResponse) 一个视图函数(类),简称视图, ...

  6. request.getParameter和request.getAttribute之间的区别

    HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别: (1)HttpServletRequest类有setAttri ...

  7. request.getParameter()与request.setAttribute()的区别

    request.getParameter(),request.setAttribute()区别如下: (1)request.getParameter()取得是通过容器的实现来取得通过类似post,ge ...

  8. request.getAttribute()和 request.getParameter()有何区别?

    a.request.getParameter()获取的类型是String:request.getAttribute()获取的类型是Object. b.request.getPrameter()获取的是 ...

  9. ajax request headers,ajax request VS normal request

    ajax请求(asynchronized)与普通请求(synchronized)的报文头(Header)不同:String reqType = request.getHeader("X-Re ...

最新文章

  1. 测试电子负载用于无线充电系统的功能和精度
  2. 架构师成长之路(内附推荐书籍)
  3. jquery select css样式,css配合jquery美化 select
  4. jq获取页面url后边带的参数
  5. vi/vim 按键说明
  6. 查询数据库表大小sql
  7. 盒子模型代码_果冻公开课第五课:五分钟理清盒模型的前世今生
  8. tomcat容器启动
  9. 51单片机8路抢答器c语言,51单片机8路抢答器
  10. 简述java重载和重写的相同点_方法的重载和重写的异同之处
  11. 配置Appium会话---capability配置信息
  12. FCN分割Pascal VOC 2007
  13. 从零开始的Multi-armed Bandit
  14. vmware linux dns,vmware环境下在linux中创建dns服务器
  15. 扎克伯格引领的硅谷“裸捐”风
  16. 怎样在网上赚钱啊,小编告诉你6种赚钱方式!
  17. 如何使用python视频_如何使用python网络爬虫抓取视频?
  18. 相机的硬件接口以及传输协议介绍
  19. SDUSTOJ1780 Problem E: 选举班干部了!
  20. 手提计算机重启快捷键,笔记本重启快捷键是什么

热门文章

  1. SAP SD 关于信用管理--信用更新
  2. CIKM最佳应用论文:11亿节点的大型图,看闲鱼如何用图卷积过滤垃圾评论
  3. 人脸识别技术在法国:质疑声中的先行者
  4. 「AI初识境」被Hinton,DeepMind和斯坦福嫌弃的池化到底是什么?
  5. 图像处理和模式识别等技术的快速发展大大地推动了机器视觉的发展
  6. 国人如此浮躁为哪般? --- 我看2018年度AI圈八大造假事件华人独占6件
  7. 首次公开!深度学习在知识图谱构建中的应用
  8. torch.var()、样本方差、母体方差
  9. 前沿|8种面部表情实时追踪,你的喜怒哀乐全被AI看穿了
  10. 我们离得开美国的软件和硬件吗?