关于 Out of Socket memory

本文探讨了在Linux RHEL 5.3系统中遇到的'Out of socket memory'错误,分析了两种可能导致该问题的情况:孤儿套接字过多和TCP套接字内存耗尽。通过检查内核配置和实际使用情况,确定问题由孤儿套接字引起。建议根据系统高峰期的孤儿套接字数量设定合理限制,并更新内核参数,防止错误信息误导。

在Tomcat服务器的机器上,操作系统是 Linux RHEL 5.3,在dmesg的输出中发现很多类似的报错信息:

Out of socket memory
printk: 8 messages suppressed.

从网上搜了一下,发现两篇不错的解释这个错误的文章,综合一下摘录下来。

http://jaseywang.me/2012/05/09/%E5%85%B3%E4%BA%8E-out-of-socket-memory-%E7%9A%84%E8%A7%A3%E9%87%8A-2/

http://blog.tsunanet.net/2011/03/out-of-socket-memory.html

第二篇文章里那个博主开头有段说说的挺好:

“在我们开始之前,让我告诉你,在你自己没做任何作业的时候,你不应该相信任何博客或者论坛里给的建议,尤其是那些家伙建议你修改所有tcp相关的内核参数时。他们自己并不知道自己在干什么,而且大多数时候他们可能也并太懂TCP/IP。”

让我们开始吧。(提前说一下,我也还没对这些做过实验哪,仅供参考 )


出现"Out of socket memory"消息的两种情况:

1.有很多的孤儿套接字(orphan sockets)
2.tcp socket 用尽了给他分配的内存


首先看看情况 2。对于 TCP socket 来说,使用 pages 来计数的,而非 bytes,一般情况下 1 page = 4096 bytes。page 大小可以通过下面命令获得:
$ getconf PAGESIZE
4096

查看内核分配了多少的内存给 TCP:
$ cat /proc/sys/net/ipv4/tcp_mem
69618   92825   1392

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值