问题:

          1、通过/var/log/messages定位到原因,大概意思是TCP发送缓冲区满了

2、查看其默认tcp_mem配置:

 解决办法:

1、vim /etc/sysctl.conf 加入以下内容即可

net.core.netdev_max_backlog=30000
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_mem = 94500000 915000000 927000000

2、linux推荐内核调优(可选)

cat >> /etc/sysctl.conf << EOF
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535
EOF
/sbin/sysctl -p

参数名

说明

net.ipv4.tcp_max_tw_buckets = 6000

系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值将立刻被清楚并输出警告信息。默认值为180000。对于squid来说效果不是很大,但可以控制TIME_WAIT套接字最大值,避免squid服务器被拖死。

net.ipv4.tcp_rmem = 4096 87380 4194304

接收窗口的最大大小

net.ipv4.tcp_wmem = 4096 16384 4194304

默认的接收窗口大小,默认值为 4096(4K)

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_mem[0]:低于此值,TCP 没有内存压力。net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。net.ipv4.tcp_mem[2]:高 于此值,TCP 拒绝分配 socket。上述内存单位是页,而不是字节

net.ipv4.tcp_keepalive_time = 1200

表示当 keepalive 起用的时候,TCP 发送 keepalive 消息的频度。缺省是 2 小时,改为 20 分钟

net.ipv4.ip_local_port_range = 1024 65535

表示用于向外连接的端口范围

net.core.wmem_default = 8388608

为 TCP socket 预留用于发送缓冲的内存默认值(单位:字节)一般要低于 net.core.wmem_default 的值。默认值为 16384(16K)

net.core.rmem_default = 8388608

为 TCP socket 预留用于接收缓冲的内存默认值(单位:字节)

net.core.rmem_max = 16777216

为 TCP socket 预留用于接收缓冲的内存最大值(单位:字节)

net.core.wmem_max = 16777216

TCP socket 预留用于发送缓冲的内存最大值(单位:字节)

net.core.netdev_max_backlog = 262144

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.somaxconn = 262144

listen(函数)的默认参数,挂起请求的最大数量限制

kernel.msgmnb = 65536

所有在消息队列中的消息总和的最大值(msgmnb=64k)

kernel.msgmax = 65536

指定内核中消息队列中消息的最大值(msgmax=64k)

kernel.shmmax = 68719476736

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,64 位 linux 系统:可取的最大值为物理内存值-1byte,建 议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存-1byte。例如,如果为 64GB 物理内存,可取 6410241024*1024-1=68719476735

kernel.shmall = 4294967296

该参数控制可以使用的共享内存的总页数。Linux 共享内存页大小为 4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是 16GB/4KB=16777216KB /4KB=4194304(页) ,也就是 64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求(几乎是原来设置 2097152 的两倍)

net.ipv4.tcp_fin_timeout = 30

TCP协议的time_wait超时时间。操作系统默认240秒后,才会关闭处于time_wait状态的连接,在高并发访问下,服务器端会因为处于time_wait的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。

参考:

1、TCP: Out of Memory — Consider Tuning TCP_Mem - DZone Performance

2、Linux内核调优 - 云+社区 - 腾讯云 (tencent.com)

3、记一次linux tcp和kafka调参 - 码农教程 (manongjc.com)

kernel: TCP: out of memory -- consider tuning tcp_mem 问题处理记录相关推荐

  1. kernel: TCP: time wait bucket table overflow的问题剖析及解决方法

    随着访问量的增大,系统默认的承受能力达到上限,这个时候就会报一些异常.比如/var/log/messages中常见的"kernel: TCP: time wait bucket table ...

  2. Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架

    目录 文章目录 目录 netfilter 框架 netfilter 的组成模块 netfilter 的 Hook 机制实现 netfilter 的工作原理 规则(Rules) 链(Chains) 表( ...

  3. Linux Kernel TCP/IP Stack — L7 Layer — Application Socket I/O 接口类型

    目录 文章目录 目录 基本概念 同步与异步 阻塞与非阻塞 I/O 操作的执行流程 Socket I/O 接口类型 阻塞 IO 缺点 非阻塞 IO 缺点 阻塞 IO 与非阻塞 IO 的区别 IO 多路复 ...

  4. Linux Kernel TCP/IP Stack — L2 Layer — Linux Bridge(虚拟网桥)的基本操作

    目录 文章目录 目录 Linux bridge 的基本操作 创建 Bridge 将 veth pair 连上 Bridge 为 Bridge 配置 IP 地址 将物理网卡接口设备挂靠 Bridge L ...

  5. linux kernel tcp拥塞处理之cubic算法

    原文地址 http://www.pagefault.info/?p=145 原创文章,转载请注明: 转载自pagefault 本文链接地址: linux kernel tcp拥塞处理之cubic算法 ...

  6. TCP echo_server(C++)回射服务器实现以及问题记录

    TCP echo_server(C++)回射服务器实现以及问题记录 基本运行方式: 客户端接收用户输入的字符串并发送到服务器端 服务器端将接收的字符串数据传回客户端 服务器端和客户端之间的字符串回射一 ...

  7. Linux Kernel TCP/IP Stack — L1 Layer — 多队列网卡

    目录 文章目录 目录 多队列网卡 Intel 82575 的多队列硬件实现 Intel 82575 的多队列软件驱动实现 多队列网卡识别 多队列网卡 多队列网卡,是一种用来解决网络 I/O QoS 问 ...

  8. Linux Kernel TCP/IP Stack — 协议栈收包处理流程

    目录 文章目录 目录 L2 NIC Controller 收包处理流程 L3-4 收包处理流程 Socket Layer 收包处理流程 参考文档 L2 NIC Controller 收包处理流程 硬件 ...

  9. Linux Kernel TCP/IP Stack — Socket Layer

    目录 文章目录 目录 Socket 框架 Netlink Socket Socket 框架 Socket 的类型: IP Socket tcp udp icmp raw Packet Socket N ...

最新文章

  1. iframe标签快速使用
  2. 【以太坊】ganache-cli和web3配合,操作以太坊客户端
  3. Python将被加入高考科目?你怎么看?
  4. Apache solr(二).
  5. 《数据库SQL实战》获取所有部门当前manager的当前薪水情况
  6. cascade sqlite 数据库_ON DELETE CASCADE无法正常工作在ios中的sqlite3中
  7. 华为鸿蒙mota30手机多少钱,华为Mate30系列基本确认:麒麟985、鸿蒙系统、5G,价格满意!...
  8. 搜狗输入法电脑版_搜狗输入法Mac版更新:找不到哪里下载?看这里
  9. 如何PHP给人生日祝福,祝福偶像生日的句子 祝好朋友生日快乐说说
  10. MySQL里的日期技巧
  11. 数据结构2 - 线性表
  12. SpingMVC Model 和ModelAndView,以及从参数的设置和接收
  13. 怎么退出mysql_如何安全地关闭MySQL
  14. Win能ping通win7,但是无法访问共享的解决方法
  15. Mysql中eft join、right join、inner join的区别
  16. 垃圾回收器CMS和G1
  17. halcon算子翻译——cooc_feature_matrix
  18. 自兴人工智能学院有话说,好机构培养好人才!
  19. CloudSim介绍与使用 云计算的建模与仿真
  20. vba中将数字数据转为数字格式_通过VBA将文本格式的时间转换为数字格式

热门文章

  1. Hexo博客部署至服务器
  2. python3语法糖_python3语法糖
  3. 哈工大 大数据算法 频度矩估计-Final AMS 算法
  4. DNSmasq详细解析及详细配置
  5. dnsmasq mysql_DNSmasq介绍
  6. Windows系统下,OpenSSL升级为1.1.1t
  7. 编写C语言程序,输入一个以回车符结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数(大写辅音字母是除‘A’,‘E’,‘I’,‘O’,‘U’以外的大写字母)。
  8. jQuery.hasClass() 函数
  9. C语言signed精解
  10. 我的微语录周记2014-12-01---2014-12-07_轩逸云_新浪博客