服务器重启,缓存 session 被清,怎么避免用户的访问错误呢?

2017-12-15 11:05:04 +08:00
 liudaqi
服务器上遇到问题一般打个补丁,习惯性重启一下,但是缓存和 session 都被清了,造成已经登录过的用户来访问,就出错了,要再此刷新页面才能重新生成新的 session,然后正常返回数据到页面。

虽然服务器上的业务逻辑没有问题,但是重启后,已经登录过的用户来请求刷两次才能访问,被 leader 批了好几次了
5292 次点击
所在节点    DevOps
20 条回复
wxsm
2017-12-15 11:05:50 +08:00
简单,session 不要存内存,存 redis 或者其他数据库即可。
p2pCoder
2017-12-15 11:08:14 +08:00
存入 redis,以后也方便 做 负债均衡
Quarter
2017-12-15 11:14:53 +08:00
小白 不是很懂 但是觉得好像和把 token 存到数据库很像诶
qs
2017-12-15 13:22:14 +08:00
负债均衡 2333
p2pCoder
2017-12-15 13:32:41 +08:00
@qs。。。。以前用 redis 缓存 tomcat 应用的 session 就是为了实现 session 共享做 java web 应用的负债均衡
Keyblade
2017-12-15 13:35:28 +08:00
@p2pCoder #5 他 2333 的是你打错的字
wekw
2017-12-15 13:46:17 +08:00
session 不是默认存磁盘的吗。。。。现在比较好的解决方案是 redis,一台就能抗超多用户。
w7938940
2017-12-15 13:50:16 +08:00
存 cookie 里啊,每次请求都有带
yulitian888
2017-12-15 13:50:18 +08:00
我们存 sql 的,asp.net 就是这么懒惰又暴力
cout2013mr
2017-12-15 14:04:13 +08:00
楼上说得对,做 redis,搞个缓存服务器,做负载均衡都可以使用啊。并发高,还支持集群。偷懒的话,session 超时也可以用 redis 的超时机制去做
heww
2017-12-15 14:08:35 +08:00
我倒是觉得这个话题不应该放到 devops 节点下,应该挪动到程序员节点或者运维节点。
likuku
2017-12-15 14:12:24 +08:00
session 从 web 服务器 独立出去就行了。
likuku
2017-12-15 14:13:34 +08:00
十几年前 session 放 memcched 服务器里,自带 ttl,纯内存效能足够,几乎免维护
likuku
2017-12-15 14:14:06 +08:00
#13 修正别字,是 memcached
ray1888
2017-12-15 14:29:28 +08:00
存进 redis 里面或者像我们项目,前端直接在 mongodb 开多一个数据库,存进去就好了
cominghome
2017-12-15 14:35:21 +08:00
居然没做持久化?
openbsd
2017-12-15 14:39:23 +08:00
据说在后台服务器比较多的情况下,都建议用 cookie 实现
notreami
2017-12-15 14:42:16 +08:00
好奇下,使用 token 后,session 还有必要存在嘛?以及 java 如何关闭 session 功能??
yingfengi
2017-12-15 14:44:43 +08:00
我说个脑回路清奇的解决方案
凌晨重启→_→
togodo
2017-12-15 15:26:18 +08:00
你有多台服务器挂在负载均衡后面,就可以随便重启其中几台了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/414955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX