Redis连接池
pool = BlockingConnectionPool(host=redis_host, port=redis_port, password=redis_password, max_connections=50, timeout=3, socket_timeout=2, socket_connect_timeout=2, retry=retry, retry_on_error=[BusyLoadingError, ConnectionError, TimeoutError], health_check_interval=60, decode_responses=True)
使用Redis连接池进一步复用已创建的连接,有效提升程序性能;同时,Redis提供了最大连接数配置确保连接资源的使用保持在一个可控范围内,并且能够确保线程安全。
最大连接数配置区间:在FunctionGraph函数配置Redis最大连接数建议在如下区间选取一个值:
- 最大连接数下限 =(函数单实例并发度)*(函数单次执行访问Redis并发度)
- 最大连接数上限 =(Redis实例连接数上限)/(函数最大实例数)
举例:某个访问Redis函数单实例并发度配置为5,每次执行函数访问Redis并发度为2,函数最大实例数默认400,访问的Redis实例连接数上限为30000,计算如下:
最大连接数下限 = 5*2 = 10
最大连接数上限 = 30000/400 = 75
按上述结果,建议最大连接数配置50即可。
连接池耗尽后获取连接的最大等待时间:不要超过函数执行超时时间,避免因连接池耗尽后获取连接等待导致函数执行超时。如果需要快速失败将BlockingConnectionPool替换成ConnectionPool,并删除timeout配置即可。