ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# package\_max\_length 设置最大数据包尺寸,单位为**字节**。开启open\_length\_check/open\_eof\_check/open\_http\_protocol等协议解析后。swoole底层会进行数据包拼接。这时在数据包未收取完整时,所有数据都是保存在内存中的。 所以需要设定`package_max_length`,一个数据包最大允许占用的内存尺寸。如果同时有1万个TCP连接在发送数据,每个数据包2M,那么最极限的情况下,就会占用20G的内存空间。 * `open_length_check`,当发现包长度超过`package_max_length`,将直接丢弃此数据,并关闭连接,不会占用任何内存。包括`websocket`、`mqtt`、`http2`协议。 * `open_eof_check`,因为无法事先得知数据包长度,所以收到的数据还是会保存到内存中,持续增长。当发现内存占用已超过`package_max_length`时,将直接丢弃此数据,并关闭连接 * `open_http_protocol`,GET请求最大允许8K,而且无法修改配置。POST请求会检测Content-Length,如果`Content-Length`超过`package_max_length`,将直接丢弃此数据,发送`http 400`错误,并关闭连接 > 此参数不宜设置过大,否则会占用很大的内存