我已经将内核配置中的@R_403_6852@-max调高到700,000.我已经将每个进程的ulimit调高到大约400,000.我已经将haproxy配置中的maxconn调到了200,000.它报告看到这个maxconn罚款:
show infoname: HAProxyVersion: 1.3.22Release_date: 2009/10/14Nbproc: 1Process_num: 1PID: 1355Uptime: 0d 4h38m46sUptime_sec: 16726Memmax_MB: 0Ulimit-n: 400013Maxsock: 400013Maxconn: 200000Maxpipes: 0CurrConns: 1113PipesUsed: 0PipesFree: 0Tasks: 1113Run_queue: 1node: XXXXX
这个前端负载均衡5个后端系统.但是,当每个后端达到400个会话时,它只是平衡停止平衡,并且只是推迟了其他连接.我可以用“smax”统计数据看到这一点.您将注意到每个会话的最大会话数为400,并且最大会话总数为2000:
show stat#pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pID,iID,sID,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,protoa,FRONTEND,958,2000,12624,6230219,6445523,OPEN,1,406,XXX1672,191,400,3222,1249403,1286659,221,664,no check,2559,2,198,XXX1674,192,3106,1242103,1289247,178,535,2572,171,XXX1707,193,3043,1266305,1305311,164,492,3,2551,161,XXX1782,189,3046,1236790,1282690,204,619,4,2429,190,XXX1851,3060,1235618,1281616,570,5,2490,180,BACKEND,956,2880,UP,17645,12601,protob,6,28,15204,15726,2313,2322,3520,3803,8,3303,3214,3529,3745,2539,2642,
这种限制来自哪里?我真的想把数十万个连接吸引到这个haproxy实例中. (机器有网络,cpu和RAM跟上)
解决方法 因此,阅读1.3.x版的源代码,我发现:有两个最大值.
一个是全局最大#连接,在命令行上使用-n设置,在全局配置中使用maxconn.
另一个是每代理最大#连接,在命令行上使用-N设置,或在配置中按代理配置.
具体来说,除了命令行之外,您无法配置每个代理的默认max#connections!
默认是……等待它…… 2000!
因此,在我的/etc/haproxy/haproxy.cfg文件中为每个“Listen”部分添加“maxconn 200000”可以解决此问题.
请注意,尽管文档非常好,但它并没有很好地解释这一点.具体来说,从阅读文档,我认为全局maxconn也将应用于每个代理,但不是这样.全局maxconn是针对总连接数强制实施的,但必须明确指定给定代理前端的本地最大连接数.
总结以上是内存溢出为你收集整理的linux – HAProxy TCP会话计数停止在400全部内容,希望文章能够帮你解决linux – HAProxy TCP会话计数停止在400所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)