alibaba / anyproxy

A fully configurable http/https proxy in NodeJS
http://anyproxy.io
Apache License 2.0
7.85k stars 1.22k forks source link

anyproxy占用内存问题 #439

Open jiangyunjun opened 5 years ago

jiangyunjun commented 5 years ago

anyproxy占用内存问题

const AnyProxy = require('anyproxy'); const options = { port: 8001, webInterface: { enable: false }, throttle: 10000, forceProxyHttps: true, silent: true, dangerouslyIgnoreUnauthorized: true }; const proxyServer = new AnyProxy.ProxyServer(options); proxyServer.start();

用法如上,在长时间使用后,anyproxy代理线程占用的内存越来越大。 查看堆快照,发现web版界面中的很多内容留在了堆里,并且无法被GC掉。 请问这个问题该怎么解决?###

szdemen commented 5 years ago

我也有同样的问题,尤其是跑了两三天之后,能直接撑爆小容量的整个硬盘

jiangyunjun commented 5 years ago

我也有同样的问题,尤其是跑了两三天之后,能直接撑爆小容量的整个硬盘

我的是内存问题,如果是持久化的文件太多的话,可以选择手动清除或者脚本定时清除,路径为:用户路径/.anyproxy/cache

codingfishman commented 5 years ago

@jiangyunjun 是的,目前AnyProxy会将部分文件缓存到cache目录而非内存,如果是长时间运行需要手动清理

@szdemen 手动清理适用于你的场景吗

jiangyunjun commented 5 years ago

@codingfishman 我遇到的应该是内存泄漏的问题,就算不去编写rule,5000个请求大概会使anyproxy进程的内存上升10M左右(经历GC后),长时间使用会造成代理进程内存越来越大。

shusl commented 5 years ago

@jiangyunjun 内存的增长是由于request的recorder造成的,就算你使用file来保存request记录,内存还是会不停增长,因为nedb会在内存中保存index,所以要想完全解决内存增长的问题,只能修改代码把recorder禁止掉

sandheart commented 5 years ago

@jiangyunjun 是的,目前AnyProxy会将部分文件缓存到cache目录而非内存,如果是长时间运行需要手动清理

@szdemen 手动清理适用于你的场景吗

anyproxy 在运行过程中直接清理cache目录会有什么影响吗?