免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4054 | 回复: 3
打印 上一主题 下一主题

请教一个问题: 孤儿连接(套接字) sock orphan [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-30 15:50 |只看该作者 |倒序浏览
内核日志dmesg打出很多 Out of socket memory
看内核代码,一个可能性是孤儿连接超出了限制。
请教:
1. 孤儿连接的产生原因是什么?
2. 孤儿连接过多,超过阀值后,会产生怎样的后果?

(现在有个现象是一台linux设备充当代理服务器,但通过它上网会很慢)

论坛徽章:
0
2 [报告]
发表于 2011-05-31 08:35 |只看该作者
为啥不做NAT?

论坛徽章:
0
3 [报告]
发表于 2011-05-31 09:01 |只看该作者
不知道你的内存是否足够大。看了一下代码

出现问题的地方在这里

static int tcp_out_of_resources(struct sock *sk, int do_reset)
{
...
        if (orphans >= sysctl_tcp_max_orphans ||
            (sk->wmem_queued > SOCK_MIN_SNDBUF &&
             atomic_read(&tcp_memory_allocated) > sysctl_tcp_mem[2])) {
                if (net_ratelimit())
                        printk(KERN_INFO "Out of socket memory\n");
...

因此你可做的地方有
cat /proc/net/sockstat
TCP: inuse 8 orphan 0 tw 0 alloc 8 mem 1
看看这里的orphan有多少
再看看cat /proc/sys/net/ipv4/tcp_max_orphans
是否小于上面的值,如果是,改大一些

其次
再看看上面的mem值是多少
对比一下
cat /proc/sys/net/ipv4/tcp_mem
第三个值
如果后者小,调大一点,单位是页

论坛徽章:
0
4 [报告]
发表于 2011-05-31 11:11 |只看该作者
不知道你的内存是否足够大。看了一下代码

出现问题的地方在这里

static int tcp_out_of_resources(st ...
qtdszws 发表于 2011-05-31 09:01


谢谢。
但你说的这些我都是清楚的,内存足够,tcp_mem没问题
出现那个现象时的sockstat信息现在暂时没有——因为客户的设备,重启后就正常了。

我想了解的,还是我贴子中的问题: 孤儿连接是怎样产生的? 如果超出阀值,会有什么后果?(目前代码中看到的就是超出阀值的孤儿连接会直接发rst包断开,未超出的则有可能后续会处理些别的事情,比如重传数据包……)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP