ibm-cloud - IBM Cloud LBaaS 中的空闲连接超时限制会导致我们的应用程序出现问题
问题描述
我们是一个使用 IBM Cloud LBaaS(负载均衡器服务)的 IBM 团队,用于我们在 IBM Cloud 基础架构上运行的应用程序。我们收到了一些客户投诉,称无法在我们的产品前端获得预期的响应,这是他们之前在 AWS 上部署我们的产品时从未遇到过的。我们调查了这个问题,发现客户请求的连接被 IBM Cloud 负载均衡器断开了,因为这些请求需要超过 50 秒才能从后端获得响应(这些是我们的一些长时间运行任务的用例)。
我们在这里找到了连接超时的 50 秒限制https://cloud.ibm.com/docs/infrastructure/loadbalancer-service?topic=loadbalancer-service-advanced-traffic-management-with-ibm-cloud-load-balancer #连接超时。我们想知道是否可以为我们定制空闲超时来满足我们长时间运行的任务?如果目前不支持,是否有计划在未来实施,或者是否有可能将该限制增加到合理的更大值?
FYR, AWS负载均衡器服务的最大空闲超时为3600 秒:https ://aws.amazon.com/blogs/aws/elb-idle-timeout-control/ 。
任何有关如何解决/消除此问题的建议表示赞赏。如果您有任何要分享的内容,请随时直接给我发电子邮件 (yang.zhang3@ibm.com)。谢谢!
杨
解决方案
如果您提到空闲连接超时,则在同一文档链接中提到您可以将服务器和客户端超时设置为 7200 秒(2 小时)。
服务器端和客户端空闲连接超时值现在可以使用 API 进行配置。用户可以使用“SoftLayer_Network_LBaaS_Listener”服务的“UpdateLoadBalancerProtocols”方法配置服务器超时(参数名称:serverTimeout)和客户端超时(参数名称:clientTimeout)值,以秒为单位最长 2 小时(范围:1 到 7200 秒)。如果用户没有提供服务器或客户端的超时值,负载均衡器将使用默认值(在表中提到)作为相应的超时值。
有关如何使用该方法的示例,请查看API 参考文档UpdateLoadBalancerProtocols
中提到的这个 softlayer-python 客户端示例
import SoftLayer
from pprint import pprint
# Your load balancer UUID
uuid = 'set me'
# New protocols to add
protocolConfigurations = [
{
"backendPort": 1350,
"backendProtocol": "TCP",
"frontendPort": 1450,
"frontendProtocol": "TCP",
"loadBalancingMethod": "WEIGHTED_RR", # ROUNDROBIN, LEASTCONNECTION, WEIGHTED_RR
"maxConn": 500,
"sessionType": "SOURCE_IP"
},
{
"backendPort": 1200,
"backendProtocol": "HTTP",
"frontendPort": 1150,
"frontendProtocol": "HTTP",
"loadBalancingMethod": "ROUNDROBIN", # ROUNDROBIN, LEASTCONNECTION, WEIGHTED_RR
"maxConn": 1000,
"sessionType": "SOURCE_IP",
"serverTimeout": 70,
"clientTimeout": 70
}
]
# Create the api client
client = SoftLayer.Client()
listener_service = client['Network_LBaaS_Listener']
_mask = "mask[listeners]"
try:
response = listener_service.updateLoadBalancerProtocols(uuid, protocolConfigurations, mask=mask)
pprint(response)
except SoftLayer.SoftLayerAPIError as e:
print("Unable to add protocols: %s, %s" % (e.faultCode, e.faultString))
推荐阅读
- python - 我试图制作密码破解程序,但遇到了程序重复密码已经尝试过的问题
- python - 如何直接在服务器上处理练习答案并使用 Django 在练习数据上立即更新结果
- node.js - Nest.js 测试错误:Nest v8 中不允许使用“扩展记录器”指令。请改用“扩展 ConsoleLogger”
- javascript - 在发生更改事件时返回从 select 获得的值并在事件之外使用它
- c++ - 给定一个字符串 s,返回 s 中最长的回文子串。c++ 我的尝试有问题;
- javascript - 如何在 javascript 上打破 event.stopImmediatePropagation
- ios - 在 Expo Bare Workflow 中将二进制文件与 ios 库链接
- c# - 是否可以使用 ref getter 编写脏标志?
- ruby-on-rails - 在 ruby on rails 中,动态 id 不适用于两个词,但可以完美地用于一个词——使用引导程序崩溃
- c# - 如何委托 dll 回调函数