+
 新版

如何控制用户最大同时访问量

游荡在记忆深处 发布于 2016/08/18 10:15
阅读 724
收藏 0

我们系统现在有个功能,可以灵活的配置数据库表信息,然后给客户在前台页面上灵活查询表的明细信息。

但是有些表查询会有点慢,为了考虑压力问题,设置了同时查询的最大连接数。

我是设置了一个hashtable,请求来一次,put一个到hashtable,查询结束后,remove掉。

当hashtable的size达到设置的上限时,就提示系统繁忙,稍后再试。

但是有个问题:当用户点击查询按钮后,查询的数据比较慢,没等查询结束用户就把这个页面关了,此时hashtable的size加1,但是没能减1,请问这个应该怎么处理?

或者是否能有其他方案?

加载中
0
喂码呢
喂码呢

个人觉得没必要处理,如果非要处理的话,在用js加一个浏览器关闭确认框,用户确认后发一个请求去服务器端去移除对应的请求记录

游荡在记忆深处
不处理的话,存储的请求数会慢慢增长到最大限制。所以还是考虑监听用户关闭页面
0
Eric_林
Eric_林
不考虑优化系统,典型的北京治堵
Eric_林
Eric_林
肯定不能根据客户端来控制hashtable,为什么不能在数据库查询完,,返回页面的之前就减hashtable呢
eechen
eechen
为什么不说说你的高见?
0
jQer
jQer
当然是后台队列了。所有该类型的请求都放到队列,每个用户队列中的数量设定上限。超过上限就是 forbidden。这些操作应该是后台异步运行,然后反馈到前端(ajax 轮训或者 websocket)。
0
热心的小林
热心的小林
你说的查询结束-1应该是说的sql执行结束-1,与前端是否关闭页面没关系的。
0
乌龟壳
乌龟壳
时间长的东西应该异步去做,页面上用户提交计算任务,计算完了发邮件给用户或者在页面某个地方可以查任务的状态,甚至觉得太长可以手动取消。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部