压测了大概20小时后,gateway进程最大的去到20M,而businiess内存还是2m多,gateway代码没改动过,请问这是为什么?
gateway进程会维护客户端的连接,每个连接会占用一定的内存。所以随着连接数的增大,gateway进程内存会增大。这些连接断开后内存会恢复,当然不会恢复到刚启动时的内存值,因为gateway运行过程中会载入固定几个文件到内存,内存会有所增加,但最终到达一个较低的恒定值,不会有内存泄露。
另外压测时客户端不要只发数据,不读数据,那样会导workerman发送缓冲区堆积一定的数据,同样会导致内存增加,由于每个连接发送缓冲区大小固定,所以内存增长到一定程度后,也会达到恒定值,不会有内存泄露。
嗯嗯,感谢你的详细回答
那么如何手动清理 缓冲区 中的数据呢?
不用清理,缓冲区的数据发送到对方就会自动释放了,或者链接断开也会自动释放
gateway进程会维护客户端的连接,每个连接会占用一定的内存。所以随着连接数的增大,gateway进程内存会增大。这些连接断开后内存会恢复,当然不会恢复到刚启动时的内存值,因为gateway运行过程中会载入固定几个文件到内存,内存会有所增加,但最终到达一个较低的恒定值,不会有内存泄露。
另外压测时客户端不要只发数据,不读数据,那样会导workerman发送缓冲区堆积一定的数据,同样会导致内存增加,由于每个连接发送缓冲区大小固定,所以内存增长到一定程度后,也会达到恒定值,不会有内存泄露。
嗯嗯,感谢你的详细回答
那么如何手动清理 缓冲区 中的数据呢?
不用清理,缓冲区的数据发送到对方就会自动释放了,或者链接断开也会自动释放