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修改后并在现场验证问题已解决,第二种方法没有试验有待考证。
分享到:
相关推荐
getRemoteAddr():获得客户端的IP地址 getRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址 InetAddress ia = InetAddress.getLocalHost(); String iad = ia.getHostAddress();//主机IP ...
- `request.getRemoteAddr()`: 返回发起请求的客户端IP地址。 - `request.getRemoteHost()`: 返回发起请求的客户端主机名。 2. **编码与内容信息** - `request.getCharacterEncoding()`: 返回请求的字符编码集...
Java根据Request获取客户端IP是指在Java Web开发中获取客户端的IP地址,以便进行相应的处理和分析。在JSP中,获取客户端IP地址的方法是使用request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是,如果...
6. `request.getRemoteHost()`:与`getRemoteAddr()`类似,但这个方法会尝试解析客户端的主机名,如果IP地址可以转换为主机名,它会返回主机名,否则返回IP地址。在需要识别客户端身份或者进行地理定位时,此方法...
String remoteIp = request.getRemoteAddr(); ``` ##### 5. `getRemotePort()` 此方法用于获取客户端连接到服务器时使用的端口号。 ```java int remotePort = request.getRemotePort(); ``` ##### 6. `...
System.out.println(request.getRemoteHost()); // 客户端主机名或IP System.out.println(request.getProtocol()); // HTTP协议版本 System.out.println(request.getScheme()); // 协议(http/https) System.out....
`request.getContextPath()`、`request.getMethod()`、`request.getProtocol()`、`request.getQueryString()`、`request.getRequestedSessionId()`、`request.getRequestURI()`、`request.getRemoteAddr()`和`...
8. **REMOTE_ADDR**:`request.getRemoteAddr()`获取发出请求的客户端的IP地址。 9. **REMOTE_HOST**:`request.getRemoteHost()`返回客户端的完全限定域名。 10. **REMOTE_USER**:如果已进行认证,`request....
客户端 IP 地址:<%=request.getRemoteAddr()%> 客户端主机名:<%=request.getRemoteHost()%> 表单提交来的值:<%=request.getParameter("qwe")%> ``` 2. **response对象**: `response`对象是`...
String remoteAddr = request.getRemoteAddr(); // 客户机名称 String remoteHost = request.getRemoteHost(); // 请求端口 int remotePort = request.getRemotePort(); // 接收客户信息的页面 String ...
- **`request.getRemoteAddr()`**: 获取远程地址(客户端IP)。 - **`request.getAuthType()`**: 获取认证类型。 - **`request.getRemoteUser()`**: 获取远程用户名称。 - **`request.getContentType()`**: 获取请求...
System.out.println(request.getRemoteAddr()); // 客户端IP地址 System.out.println(request.getRemoteHost()); // 客户端主机名,如果没有获取到则返回IP地址 ``` 客户端的IP地址可用于统计访问来源、地理位置...
- **`request.getRemoteHost()`**:获取客户端主机名,如果无法获取则返回IP地址。 - **`request.getProtocol()`**:获取请求协议的名称和版本。 - **`request.getHeaderNames()`**:获取所有请求头的名字集合。 - *...
String clientName = request.getRemoteHost(); ``` 8. **getServerName()**:获取服务器名称。 ```java String serverName = request.getServerName(); ``` 9. **getServerPort()**:获取服务器的端口号。 ``...
- `request.getRemoteAddr()`获取客户端的IP地址。 - `request.getRemoteHost()`获取客户端的主机名。 - `request.getRemotePort()`获取客户端连接到服务器的端口号。 - `request.getRemoteUser()`如果已认证,...
Remote Address: <%=request.getRemoteAddr()%> Remote host: <%=request.getRemoteHost()%> Path info: <%=request.getPathInfo()%> Path translated: <%=request.getPathTranslated()%> Query ...
2. **`getRemoteAddr()`** 和 **`getRemoteHost()`**:这两个方法可以分别获取客户端的 IP 地址和主机名。 ```java String clientIP = request.getRemoteAddr(); String clientHost = request.getRemoteHost(); ...
`request.getRemoteAddr()` 返回发出请求的客户端的IP地址,如果没有反向代理,通常为用户的真实IP。 `request.getRemoteHost()` 返回客户端主机名,基于IP地址解析得到。 3. 服务器信息: `request....
客户端主机名:<%= request.getRemoteHost() %> 表单提交来的值:<%= request.getParameter("qwe") %> ;charset=gb2312" %> <% request.setCharacterEncoding("gb2312"); %> <%@ page import="java....
- `request.getRemoteHost()`:获取客户端主机名(如果不可用,则返回IP地址)。 - `request.getProtocol()`:获取协议名称和版本。 #### 五、最佳实践与注意事项 1. **正确处理`User-Agent`字符串**:由于`User-...