我正在使用 red:set_keepalive(max_idle_timeout,pool_size)
(从这里:https://github.com/openresty/lua-resty-redis#set_keepalive)
使用Nginx并尝试确定用于max_idle_timeout和pool_size的最佳值。
如果我的worker_connections设置为1024,那么pool_size为1024是否有意义?
对于max_idle_timeout,60000(1分钟)是否太“激进”?较小的值更安全吗?
谢谢
马特
答案 0 :(得分:1)
我认为官方文档的Check List for Issues部分为调整连接池大小提供了很好的指导:
基本上,如果您的NGINX处理
n
个并发请求,并且您的NGINX具有m
个工作程序,则连接池大小应配置为n/m
。例如,如果您的NGINX通常 处理1000个并发请求,而您有10个NGINX工作线程,则连接池大小应为100。
因此,如果您期望实际连接到Redis的1024个并发请求,那么您的池的合适大小为1024 / worker_processes
。也许还有更多原因可以解释工人之间的请求分配不均。
您的keepalive应该足够长,才能说明流量的到达方式。如果流量恒定,则可以降低超时时间。还是停留60秒,在大多数情况下,更长的超时时间不会带来任何明显的变化。