启用http
模块,执行如下命令:
java -jar $JETTY_HOME/start.jar --add-modules=http
查看http
模块的配置文件,执行如下命令:
cat $JETTY_BASE/start.d/http.ini
输出如下:
# ---------------------------------------
# Module: http
# Enables a clear-text HTTP connector.
# By default clear-text HTTP/1.1 is enabled, and clear-text HTTP/2 may be added by enabling the "http2c" module.
# ---------------------------------------
--modules=http### Clear-Text HTTP Connector Configuration## The host/address to bind the connector to.
# jetty.http.host=0.0.0.0## The port the connector listens on.
# jetty.http.port=8080## The connector idle timeout, in milliseconds.
# jetty.http.idleTimeout=30000## The number of acceptors (-1 picks a default value based on number of cores).
# jetty.http.acceptors=1## The number of selectors (-1 picks a default value based on number of cores).
# jetty.http.selectors=-1## The ServerSocketChannel accept queue backlog (0 picks the platform default).
# jetty.http.acceptQueueSize=0## The thread priority delta to give to acceptor threads.
# jetty.http.acceptorPriorityDelta=0## Whether to enable the SO_REUSEADDR socket option.
# jetty.http.reuseAddress=true## Whether to enable the SO_REUSEPORT socket option.
# jetty.http.reusePort=false## Whether to enable the TCP_NODELAY socket option on accepted sockets.
# jetty.http.acceptedTcpNoDelay=true## The SO_RCVBUF socket option to set on accepted sockets.
## A value of -1 indicates that the platform default is used.
# jetty.http.acceptedReceiveBufferSize=-1## The SO_SNDBUF socket option to set on accepted sockets.
## A value of -1 indicates that the platform default is used.
# jetty.http.acceptedSendBufferSize=-1
各参数的说明,如下:
-
jetty.http.host
指定监听的主机地址。 -
jetty.http.port
指定监听的端口,默认值为8080
。 -
jetty.http.idleTimeout
服务端检查通信链接,假如在给定时间内发现没有收到或者写出数据,则判定该链接进入空闲状态。
判定通信链接进入空闲状态前,等待的超时值,单位:毫秒。
默认值为30000,即30秒。 -
jetty.http.acceptors
指定acceptor
的数量,默认值为1
,即只创建一个acceptor
对象。
取值为-1
时,则自动依据cpu核的数量来决定acceptor
的数量。 -
jetty.http.selectors
指定selector
的数量,默认值为-1
,即自动依据cpu核的数量来决定acceptor
的数量。 -
jetty.http.acceptQueueSize
等待accept
操作时的队列的长度,默认值为0
,即使用当前操作系统的默认值。 -
jetty.http.acceptorPriorityDelta
acceptor
线程的优先级。 -
jetty.http.reuseAddress
重用本地监听地址的开关,默认值为true
,即绑定地址时如遇到TIME_WAIT
时允许绑定成功。
TCP选项名为SO_REUSEADDR
。
参考资料,如下:- 网络编程:SO_REUSEADDR的使用
- Socket中SO_REUSEADDR详解
- setsockopt中参数SO_REUSEADDR的四个作功用
-
jetty.http.reusePort
重用监听端口的开关,默认值为false
。
TCP选项名为SO_REUSEPORT
。 -
jetty.http.acceptedTcpNoDelay
是否开启TCP_NODELAY
选项的开关,默认值为true
。
TCP选项名为TCP_NODELAY
。
参考资料如下:- TCP_NODELAY以及黏包问题
- 网络编程:TCP_NODELAY
- 详解Socket编程—TCP_NODELAY选项
- TCP_NODELAY详解
-
jetty.http.acceptedReceiveBufferSize
接收数据的缓冲区的大小,默认值为-1
,即使用当前操作系统的默认值。
TCP选项名为SO_RECVBUF
。
参考资料如下:- 设置SO_RECVBUF和SO_SENDBUF套接字选项
- 一个 TCP 接收缓冲区问题的解析
- 常用套接字选项(SOL_SOCKET级别)
- SO_SNDBUF和SO_RCVBUF
查看操作系统默认值,执行如下命令:
sysctl -a|grep ipv4.tcp|grep mem
输出,如下:
net.ipv4.tcp_mem = 44583 59446 89166 net.ipv4.tcp_rmem = 4096 131072 6291456 net.ipv4.tcp_wmem = 4096 16384 4194304
-
jetty.http.acceptedSendBufferSize
发送数据时的缓冲区的大小,默认值为-1
,即使用当前操作系统的默认值。
TCP选项名为SO_SENDBUF
。