我们提供了一个零售解决方案,其中Spring会话会注意会话处理。我们使用gemfire维护会话对象,并将客户端用作spring会话数据gemfire客户端模块。我们最初进行了转播,最终启动并运行。但是,当应用程序所在容器的负载增加时,我们在应用程序响应方式方面面临严重问题。响应时间增加到无法处理任何请求的程度。
我们分析了线程转储,并且可以看到许多与gemfire客户端相关的线程处于阻塞或等待状态。即使导致问题的负载,jvm参数,CPU使用率和堆内存似乎都很好。
我们从线程转储分析中看到以下内容:
线程争用 Servlet-调度程序:渲染 在org.apache.geode.cache.client.internal.ConnectionImpl@3afbbf9
上被阻止从gemfire客户端日志中观察到以下内容:
19/4/30 12:03:21.559 [m [30m2019-04-30 12:03:21,559 [Cache Client XX.XX.XX.XX(XXXXX:62475):1024端口40404上的更新程序线程]信息 :冗余订阅端点XXXXX:40404崩溃。排程 复苏。第一个列入黑名单的日志为:19/4/30/12:03:21.631 PM [m [34m2019-04-30 12:03:21,630 [queueTimer-DEFAULT] WARN:缓存 XX.XX.XX.XX(XXXXX:76221):1024端口40404上的客户端更新程序线程 (XXXXX:40404):尝试创建一个 服务器到客户端的通信套接字,将退出: org.apache.geode.cache.client.ServerRefusedConnectionException::40404拒绝连接:java.lang.Exception: 此客户端已被服务器列入黑名单
将其列入黑名单后,该应用实例将全部死亡,它将无法处理任何请求。
根据此黑名单,任何帮助都将受到赞赏。
答案 0 :(得分:0)
黑名单或更新的拒绝列表一词意味着客户对事件的响应速度变慢。
您可以在文档中阅读有关如何管理和防止接收方速度过慢的更多信息: https://gemfire.docs.pivotal.io/98/geode/managing/monitor_tune/slow_receivers.html
从这些文档中获得的主要好处是确保客户端具有足够的资源,并且不会因CPU周期,网络,磁盘或RAM匮乏。
如果客户端在虚拟环境中运行,请从vshpere角度查看运行客户端的VM的窃取时间或准备时间。如果客户端在容器中运行,还请确保它没有因为限制已超出配额而受到限制。
拒绝列表的代码: https://github.com/apache/geode/search?q=denylist&unscoped_q=denylist