搜索
bottom↓
回复: 5

webserver网页多次刷新后无法响应

[复制链接]

出0入0汤圆

发表于 2016-11-4 17:10:42 | 显示全部楼层 |阅读模式
使用RT-Thread+Lwip在STM32F407上搭建了个Webserver,但是发现多次刷新页面后,程序会进入空闲线程无法再次触发netconn_accept()。而且多次刷新网页netconn_recv函数有时会返回ERR_TIMEOUT错误,提取到的newbuf也为NULL。检查了下整个过程netconn_recv申请的newbuf在函数末尾都用netbuf_delete清除了。用到的netconn也close了,应该没有什么内存泄露。我将RT_ETHLINKCHANGE_THREAD_PRIORITY的优先级也提升到最高了,pbuf的容量也相应的加大,但是没有任何变化。除了刷新网页之外,通过网页上的AJAX向板卡发送POST请求多次也会出现相同的问题,我想知道还有什么因素可以造成这样的问题。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2016-11-4 18:39:58 | 显示全部楼层
原因99.9是内存泄露,泄露点没找到而已。
继续查下。

出0入0汤圆

 楼主| 发表于 2016-11-5 11:53:17 | 显示全部楼层
aozima 发表于 2016-11-4 18:39
原因99.9是内存泄露,泄露点没找到而已。
继续查下。

通过finsh查看了下,发现每刷新一次网页都会申请一个TCP连接。刷新网页奔溃后,关掉浏览器上的该页面,系统好像才会清空所有申请的TCP连接。而且每次刷新网页接收的TCP都是用不同端口的,感觉像是打开了一个新的页面而不是在本页面上刷新。这是什么原因?

出215入118汤圆

发表于 2016-11-5 12:57:57 | 显示全部楼层
刷新就是重新发送一系列HTTP请求,HTTP大多是短连接,下载完就释放的。

出0入0汤圆

 楼主| 发表于 2016-11-7 09:56:43 | 显示全部楼层
aozima 发表于 2016-11-4 18:39
原因99.9是内存泄露,泄露点没找到而已。
继续查下。

找到问题的原因了,是TCP_MSL设置的过大了。使TCP连接在TIME_WAIT状态时间过长,保存了2分钟才被删掉。要是在2分钟之内多次发送请求,TCP连接来不及删除就会把内存撑爆了。将TCP_MSL减小到30秒目前没有发现问题。

出0入0汤圆

发表于 2016-11-7 10:00:23 | 显示全部楼层
tyj07 发表于 2016-11-7 09:56
找到问题的原因了,是TCP_MSL设置的过大了。使TCP连接在TIME_WAIT状态时间过长,保存了2分钟才被删掉。要 ...

不错,研究得挺深入的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 23:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表