Memcached 会话管理器在多线程环境中失败

Memcached Session Manager failing in multi-threaded environment

提问人:Chiranjib Texasai 提问时间:11/9/2023 最后编辑:Chiranjib Texasai 更新时间:11/17/2023 访问量:43

问:

我在多线程的 spring Web 应用程序中使用 memcached 会话管理器,一切正常,但下载和打印有时会出错,我们正在通过 session.setAttribute() 在需要时通过应用程序设置会话值。

  • 下载和打印(在新选项卡中打开pdf文件)是通过多线程实现的,以获得更好的性能。
  • 大多数情况下,第一个下载请求不会完成。
  • 但随后在相同的记录选择上,它适用于所有文件类型(xls,csv,txt)
  • 对于印刷品,正如我在三次后偶尔观察到的那样,它有效。
  • 打印页面通过表单在新选项卡中打开,提交,然后通过ajax第二方法命中,所有参数都存储在数据库中,同时创建和执行job-id,这里数据是从后端提取的。
  • 第二种方法返回 job-id,该 ID 在 JS ajax 调用中不断检查状态是否已完成。
  • 然后,最后的 AJAX 调用将文件打印到新打开的选项卡中。
  • 然后,通过创建的新线程在所需的时间更新会话。

这是我在上下文 .xml 中的 memcached 配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
             memcachedNodes="memcahed-cluster-node:11211"
             memcachedProtocol="text"
             sticky="false"
             sessionBackupAsync="false"
             lockingMode="all"
    />

application lib 目录下的 jar 文件列表是:-

kryo-serializers-0.8.jar minlog-1.2.jar 反射ASM-0.9.jar AmazonElastiCacheClusterClient-no-version.jar ASM-3.2.jar Javolution-5.4.3.1.jar KRYO-1.03.jar

tomcat 库中的 jar 文件是:-

spymemcached-2.11.7.jar memcached-session-manager-2.3.2.jar memcached-会话管理器-tc8-2.3.2.jar

在 beanstalk 中,会话粘性被禁用,并使用至少两个用于测试的实例进行负载均衡。 我们正在使用 Tomcat 8.5 服务器 此外,我们还使用 AWS memcached 集群节点。

上述配置是应用程序运行的唯一标准,但上述书面问题除外。我尝试锁定模式“自动”但无法登录。 当我检查未完成的下载和打印请求的日志时,它显示了从浏览器中的网络选项卡检查作业状态已完成或未完成的连续调用。但是我检查的值显示已完成,然后它应该根据应用程序流程进行打印。

我需要一些关于如何处理这个问题的帮助。无法调试,因为在 AWS Beanstalk 中测试时会出现此问题。

amazon-web-services memcached amazon-elasticache 管理会话 复制

评论


答: 暂无答案