tomcat、gunicorn、uwsgi在大量并发时,遇到普遍的问题是502 504问题;
说到502,我们知道后端处理过慢需要扩展worker;
说到504,我们知道处理超时,一般调整timeout就可以;
那么502,504问题的根本原因是什么?
socket 内部是有两个队列,一个syn队列,一个是accept队列,这两个队列都在accept()之间就有了。 backlog是syn和accept队列之和。当后端处理不及时,backlog又到限制时,会出现502,也就是说新的客户端不能建立,因为没有syn的槽位供你三次握手。 504 的话,处理超时,中断处理,直接返回错误信息。
网友评论