高并发访问时如何确保服务器端session过多而造成内存溢出致使服务器宕机的方法之一
2013-08-28 15:26
309 查看
用户登录后所在登录页面中设置一个隐藏的iframe标签。该子页面会每隔10s中向报告一次在线消息。代码如下:
……
<divclass="response">
<iframesrc="response.html"></iframe>
</div>
……
response.html代码实现如下:
<!DOCTYPEhtml
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<metahttp-equiv="pragma"content="no-cache"></meta>
<metahttp-equiv="Cache-Control"content="no-cache,
must-revalidate"></meta>
<metahttp-equiv="expires"content="0"></meta>
<metahttp-equiv="content-type"content="text/html;
charset=utf-8"></meta>
<scripttype="text/javascript"src="js/ajax.js"></script>
<scripttype="text/javascript">
window.onload = function() {
setInterval(response, 10000);
}
function response() {
var url ="response"
ajaxGet(url);
}
</script>
</head>
<body></body>
</html>
服务器端程序每接受一次请求,在未退出的情况下将该会话的生存时间延长15S。服务器端相应代码如下:
package
web.execute;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import web.standard.PlainServlet;
publicclass
ResponseServletextends PlainServlet {
privatestaticfinallongserialVersionUID
= 6549090l;
@Override
publicvoid
service(HttpServletRequest request, HttpServletResponse response)throws IOException {
super.service(request, response);
HttpSession session = request.getSession(false);
if (session ==null
|| session.getAttribute("userId") ==
null) {
return;
}
if (System.currentTimeMillis() - session.getLastAccessedTime()
< 10) {
return;
}
session.setMaxInactiveInterval(15);
System.out.println("responseServlet...");
}
}
……
<divclass="response">
<iframesrc="response.html"></iframe>
</div>
……
response.html代码实现如下:
<!DOCTYPEhtml
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<metahttp-equiv="pragma"content="no-cache"></meta>
<metahttp-equiv="Cache-Control"content="no-cache,
must-revalidate"></meta>
<metahttp-equiv="expires"content="0"></meta>
<metahttp-equiv="content-type"content="text/html;
charset=utf-8"></meta>
<scripttype="text/javascript"src="js/ajax.js"></script>
<scripttype="text/javascript">
window.onload = function() {
setInterval(response, 10000);
}
function response() {
var url ="response"
ajaxGet(url);
}
</script>
</head>
<body></body>
</html>
服务器端程序每接受一次请求,在未退出的情况下将该会话的生存时间延长15S。服务器端相应代码如下:
package
web.execute;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import web.standard.PlainServlet;
publicclass
ResponseServletextends PlainServlet {
privatestaticfinallongserialVersionUID
= 6549090l;
@Override
publicvoid
service(HttpServletRequest request, HttpServletResponse response)throws IOException {
super.service(request, response);
HttpSession session = request.getSession(false);
if (session ==null
|| session.getAttribute("userId") ==
null) {
return;
}
if (System.currentTimeMillis() - session.getLastAccessedTime()
< 10) {
return;
}
session.setMaxInactiveInterval(15);
System.out.println("responseServlet...");
}
}
相关文章推荐
- 解决路由问题造成客户端无法访问服务器的方法之瞒天过海
- Xp系统IIS服务器经常出现:目前访问网站的用户过多--该如何解决(转)
- [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
- Java设置session超时(失效)的时间 在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session 具体设置的方法有三种:
- [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
- 关于Iframe如何跨域访问Cookie和Session的解决方法
- SQL server 更改计算机名后造成未找到或无法访问服务器解决方法
- 关于Iframe如何跨域访问Cookie和Session的解决方法
- 网站[高并发]下使用[静态方法]会造成页面无法访问
- web服务器并发访问如何提升
- [转]利用单台PC服务器实现百万级并发访问的WEB服务器的方法
- IIS服务器经常出现:目前访问网站的用户过多--该如何解决
- 网站[高并发]下使用[静态方法]会造成页面无法访问
- 如何控制某个方法允许并发访问线程的个数?
- IIS服务器如何抗住高并发的客户端访问
- Xp系统IIS服务器经常出现:目前访问网站的用户过多--该如何解决
- web服务器并发访问如何提升
- [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
- C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA 无法在服务器上访问指定的路径或文件。请确保您具有必需的安全权限且该路径或文件存在。 解决方法
- 如何控制某个方法允许并发访问线程的个数?