CPing/CPong 是我们使用小型测试数据包来检查后端连接状态的概念。JK 可以在建立新的后端连接后(连接模式)以及在每个请求发送到后端之前(预处理模式)直接使用此类测试数据包。从 1.2.27 版本开始,当连接长时间空闲时(间隔模式)也可以使用它。可以配置 CPing 对 CPong 响应的最大等待时间(超时)以及间隔模式下的空闲时间。
后端将以最少的处理资源非常快速地响应测试数据包。肯定的响应表明后端可达且正在积极处理请求。它不检测是否有上下文已部署并正在工作。CPing/CPong 的好处是快速检测与后端的通信问题。缺点是延迟略有增加。
worker 属性 ping_mode 可以设置为字符组合,以确定在何种情况下使用测试数据包
- C: 连接模式,超时 ping_timeout 被 connect_timeout 覆盖
- P: 预处理模式,超时 ping_timeout 被 prepost_timeout 覆盖
- I: 间隔模式,超时 ping_timeout,空闲时间 connection_ping_interval
- A: 所有模式
多个值必须不带任何分隔符连接。我们建议使用所有 CPing 测试。如果您的应用程序对延迟非常敏感,那么您应该只使用连接和间隔模式的组合。
通过 ping_mode 激活 CPing 探测是在 1.2.27 版本中添加的。对于旧版本,只有连接模式和预处理模式存在,并且必须通过显式设置 connect_timeout 和 prepost_timeout 来激活。
worker 属性 ping_timeout 设置所有模式下 CPong 的默认等待超时时间(毫秒)。默认值为“10000”毫秒。只有通过 ping_mode 激活 CPing/CPong 探测时,该值才会被使用。默认值应该足够,除非您遇到非常长的 Java 垃圾回收暂停。根据您的网络延迟和稳定性,良好的自定义值通常在 5000 到 15000 毫秒之间。您可以使用 connect_timeout 和 prepost_timeout 覆盖用于连接和预处理模式的超时。请记住:不要使用极小的值。
worker 属性 connect_timeout 设置连接建立期间 CPong 的等待超时时间(毫秒)。如果您想覆盖通过 ping_timeout 设置的通用超时,可以使用它。要使用连接模式 CPing,您需要通过 ping_mode 启用它。由于 JK 通常使用持久连接,因此打开新连接是一个罕见事件。因此,我们建议激活连接模式。根据您的网络延迟和稳定性,良好的值通常在 5000 到 15000 毫秒之间。请记住:不要使用极小的值。
worker 属性 prepost_timeout 设置请求转发前 CPong 的等待超时时间(毫秒)。如果您想覆盖通过 ping_timeout 设置的通用超时,可以使用它。要使用预处理模式 CPing,您需要通过 ping_mode 启用它。激活此类型的 CPing/CPong 会为每个请求增加少量延迟。通常这已经足够小,并且 CPing/CPong 的好处更为重要。因此,通常我们也建议使用 prepost_timeout。根据您的网络延迟和稳定性,良好的值通常在 5000 到 10000 毫秒之间。请记住:不要使用极小的值。
直到 1.2.27 版本,ping_mode 和 ping_timeout 都不存在,要启用连接或预处理模式 CPing,您必须分别将 connect_timeout 或 prepost_timeout 设置为某个合理的正值。