Tomcat acceptCount参数

对于acceptCount这个参数,含义跟字面意思并不是特别一致(个人感觉),容易跟maxConnections,maxThreads等参数混淆;实际上这个参数在tomcat里会被映射成backlog:

static {
    replacements.put("acceptCount", "backlog");
    replacements.put("connectionLinger", "soLinger");
    replacements.put("connectionTimeout", "soTimeout");
    replacements.put("rootFile", "rootfile");
}

backlog表示积压待处理的事物,是socket的参数,在bind的时候传入的,比如在Endpoint里的bind方法里:

public void bind() throws Exception {

    serverSock = ServerSocketChannel.open();
    ...
    serverSock.socket().bind(addr,getBacklog());
    ...
}

这个参数其实设置的是TCP的完全连接队列的大小。不过即便设置了acklog参数,linux也会和/proc/sys/net/core/somaxconn这两个值作比较,哪个值小选哪个,somaxconn默认是128,所以在将tomcat-connector的acceptCount参数设置大时,也得将somaxconn的值设置大一些

设置方法:

sysctl -w net.core.somaxconn=32767


你可能感兴趣的:(acceptCount)