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

request.getRemoteAddr()和request.getRemoteHost()的更多相关文章

  1. request.getRemoteAddr() 获取的值为0:0:0:0:0:0:0:1的原因及解决办法

    问题: 在近期开发的javaweb项目中,需要记录登录时的电脑ip地址和主机名,通过request.getRemoteAddr()和request.getRemoteHost()得到的值都是0:0:0 ...

  2. Java获取IP地址:request.getRemoteAddr()注意

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

  3. 项目部署到服务器上之后request.getRemoteAddr()为什么获取的都是本地地址

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

  4. 解决request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1这个小问题

    症状: Windows操作系统,eclipse开发环境下,在本机上使用http://localhost:8080/...访问本机上的页面,使用tomcat作为服务器 在Servlet或者Action中 ...

  5. HttpServletRequest、request常用方法、request常见应用、请求转发、RequestDispatcher

        HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. ...

  6. request.getParameter()、request.getInputStream()和request.getReader()

    大家经常 用servlet和jsp,但是对 request.getInputStream()和request.getReader()比较陌生.request.getParameter()request ...

  7. 【转】request.getServletPath()和request.getPathInfo()用法

    转自:https://my.oschina.net/sub/blog/182408 在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.ge ...

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

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

  9. Request、Request.Form、Request.QueryString 用法的区别

    Request.Form:获取以POST方式提交的数据. Request.QueryString:获取地址栏参数(以GET方式提交的数据). Request:包含以上两种方式(优先获取GET方式提交的 ...

随机推荐

  1. Python 字典(2)

    一.遍历字典 一个字典可能会包含多个键-值对,字典可以以多种方式存储信息,因此有多种遍历字典的方式,比如键-值对.键.值. 1.遍历所有的键-值对 user_01 = {'username':'tiz ...

  2. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  3. LeetCode(70) Climbing Stairs

    题目 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either cli ...

  4. 3.2.8 sed 的运作

        sed 的工作方式相当直接.命令行上的每个文件会依次打开与读取.如果没有文件,则使用标准输入,文件名“-”(单个破折号)可用于表示标准输入.       [many@avention Desk ...

  5. Django——分页功能Paginator

    Django分页功能----Paginator Paginator所需参数: Paginator(object_list,per_page) Paginator常用属性: per_page: 每页显示 ...

  6. Python之条件 循环和其他语句 2014-4-6

    #条件 循环和其他语句 23:30pm-1:431.print和import的更多信息 使用逗号将多个表达式输出 >>> print 'age:',42 age: 42 >&g ...

  7. Springboot和SpringMVC区别

    Springboot和SpringMVC区别----http://www.cnblogs.com/xdyixia/p/9279644.html

  8. IE & table & border & border-collapse & bug

    shit IE table border bug & border-collapse bug > `border-collapse: collapse;` table { width: ...

  9. [codevs3044][POJ1151]矩形面积求并

    [codevs3044][POJ1151]矩形面积求并 试题描述 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行一个数n ...

  10. 第一个Spring程序(DI的实现)

    一,依赖注入:Dependency Injection(DI)与控制反转(IoC),不同角度但是同一个概念.首先我们理解一点在传统方式中我们使用new的方式来创建一个对象,这会造成对象与被实例化的对象 ...