作者存档: nick
APISIX内存问题
最近在使用apisix做一个接入网关,遇到比较多的内存相关问题:
使用apisix版本3.7.0,生产集群中遇到内存持续缓慢增长的现象,google后官方确实有个etcd timer相关的内存泄漏bug:https://github.com/apache/apisix/pull/10614
测试环境修复此bug后,压测验证仍存在内存增长问题。压测环境为
- 模拟随机报文发送(1k~1m) -> apisix (ext-plugin <-> JavaPluginRunner) -> Server — 1k tps压测几分钟后,系统出现oom
- 模拟固定报文发送(4k) -> apisix (ext-plugin <-> JavaPluginRunner) -> Server — 1k tps压测,openresty进程内存占用稳定
github中找到了类似的问题:https://github.com/apache/apisix/issues/8461,但官方并没有认可此bug并给修复。修改apisix/plugins/ext-plugin/init.lua后,重新进行1压测,内存已稳定。
推测为flatbuffers.builder的Clear没有清理buffer内存,为提高性能采用了复用的策略,在此场景1下会导致每个buffer都会增长到接近1m的大小,导致内存占满;
Ollama 模型验证
总体试用下来,qwen2:7b > llama3:8b > gemma:7b > qwen:4b
qwen2是最近刚出的,中文回答、代码生成效果都不错,llama3的中文比较糟糕,gemma:7b有时候生成的内容会有重复或者缺失,qwen4b只能算个demo
Win下开启BBR2网络拥塞控制
- 进入管理员模式powershell
执行:Get-NetTCPSetting | Select SettingName, CongestionProvider
- 默认为:
SettingName CongestionProvider
———– ——————
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
- 开启命令:
netsh int tcp set supplemental Template=Internet CongestionProvider=bbr2
netsh int tcp set supplemental Template=Datacenter CongestionProvider=bbr2
netsh int tcp set supplemental Template=Compat CongestionProvider=bbr2
netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=bbr2
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr2
- 开启后显示:
SettingName CongestionProvider
———– ——————
Automatic
InternetCustom BBR2
DatacenterCustom BBR2
Compat BBR2
Datacenter BBR2
Internet BBR2
Stellaris
event ancrel.10004 纳米熔炉
event ancrel.10005 空中穹顶
event ancrel.10006 次元制造机
event ancrel.10007 财富中心
event ancrel.10008 营养中心
event ancrel.10009 四级奇点
resource sr_dark_matter 20000 暗物质
近期评论