入门指引 Server Client Process AsyncIO Memory HttpServer WebSocket 高级 其他

发布于 2015-08-09 09:41:32 | 193 次阅读 | 评论: 0 | 来源: 网络整理

设置最大数据包尺寸,开启open_length_check/open_eof_check/open_http_protocol等协议解析后。swoole底层会进行数据包拼接。这时在数据包未收取完整时,所有数据都是保存在内存中的。

所以需要设定package_max_length,一个数据包最大允许占用的内存尺寸。如果同时有1万个TCP连接在发送数据,每个数据包2M,那么最极限的情况下,就会占用20G的内存空间。

  • open_length_check,当发现包长度超过package_max_length,将直接丢弃此数据,并关闭连接,不会占用任何内存。
  • open_eof_check,因为无法事先得知数据包长度,所以收到的数据还是会保存到内存中,持续增长。当发现内存占用已超过package_max_length时,将直接丢弃此数据,并关闭连接
  • open_http_protocol,GET请求最大允许8K,而且无法修改配置。POST请求会检测Content-Length,如果Content-Length超过package_max_length,将直接丢弃此数据,发送http 400错误,并关闭连接

此参数不宜设置过大,否则会占用很大的内存

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务