• 解决Out of socket memory问题


    两种情况会出发 "Out of socket memory" 的信息:

    1.有很多的孤儿套接字(orphan sockets)

    2.tcp socket 用尽了给他分配的内存

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

    $ getconf PAGESIZE

    4096

    查看内核分配了多少的内存给 TCP

    $ cat /proc/sys/net/ipv4/tcp_mem

    69618   92825   139236

    第一个数字表示,当 tcp 使用的 page 少于 69618 时,kernel 不对其进行任何的干预

    第二个数字表示,当 tcp 使用了超过 92825 pages 时,kernel 会进入 “memory pressure

    第三个数字表示,当 tcp 使用的 pages 超过 139236 时,我们就会看到题目中显示的信息

    查看 tcp 实际用的内存:

    $ cat /proc/net/sockstat

    sockets: used 116

    TCP: inuse 3 orphan 0 tw 4 alloc 4 mem 110

    UDP: inuse 1 mem 1

    UDPLITE: inuse 0

    RAW: inuse 0

    FRAG: inuse 0 memory 0

    可以看到,实际使用的 mem(110) 远远小于 69618,所以,“Out of socket memory”的错误是由于第一种情况引起的。

    orphan socket 对于应用程序来说,意义不大,这也是内核要限制被 orphan socket 消耗内存的原因。而对于 web server 来说,有大量的 orphan socket 也属正常,那么多的连接放在那儿了。

    查看 orphan socket 限制:

    $ cat /proc/sys/net/ipv4/tcp_max_orphans

    对比当前系统中的:

    $ cat /proc/net/sockstat

    sockets: used 14565

    TCP: inuse 35938 orphan 21564 tw 70529 alloc 35942 mem 1894

    由于内核代码中有个位运算,所以实际的跟最大的是 2x 或者是 4x 的关系。现在根据实际情况,将 tcp_max_orphans 调到一个合理的值就可以了。原则上该值建议只增大,另外,每个 orphan 会消耗大概 64KB 的内存。

    还有个叫 tcp_orphan_retries 参数,对于 web server,可以减小。

    修改了上面的一些配置参数,报错日志还是在一直往外报。

    ####################################################################################################

    net.ipv4.tcp_max_orphans = 18000

    最后修改值到18000Out of socket memory报错解决。

    net.ipv4.tcp_max_tw_buckets = 10000

    最后修改值到net.ipv4.tcp_max_tw_buckets = 10000kernel: printk: xxx messages suppressed.报错解决。

    记得参数修改完成执行 sysctl -p

    #######################################################################################################

    原文

    http://www.360doc.com/content/13/0514/01/5407405_285259602.shtml

  • 相关阅读:
    Developing
    debian 中的jdk
    openwrt手册编译
    下载openwrt源码
    progit 学习笔记-- 1 第一章 第二章
    nw335 debian sid x86-64 -- 6 第三方驱动
    nw335 debian sid x86-64 -- 5 使用xp的驱动
    nw335 debian sid x86-64 -- 4 realtek 提供的官方驱动
    JavaScript中介者模式
    javascript职责链模式
  • 原文地址:https://www.cnblogs.com/mydomain/p/3077031.html
Copyright © 2020-2023  润新知