linux内核参数调优和Linux实例常用内核网络参数介绍与常见问题处理

问题1

并发场景下,常常会出现一个进程最大文件句柄数不足的情况,会报如下错误:
24: Too many open files

解决办法

ulimit -a

image

  • S:表示软限制,超出设定的值会告警。
  • H :表示硬限制,超出设定的值会报错。
  • a :列出系统所有资源限制的值
  • c:当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),这种文 件就被称为核心文件(core file)。此为限制每个核心文件的最大容量
  • d:每个进程数据段的最大值
  • f:当前shell可创建的最大文件容量
  • l:可以锁定的物理内存的最大值
  • m:可以使用的常驻内存的最大值
  • n:每个进程可以同时打开的最大文件句柄数
  • p:管道的最大值
  • s:堆栈的最大值
  • t:每个进程可以使用CPU的最大时间
  • u:每个用户运行的最大进程并发数
  • v:当前shell可使用的最大虚拟内存

ulimit -n 65535

查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024.

修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535.


问题2

在并发场景下,系统作为客户端很容易出现端口不够用的情况,当没有端口可用时,会报如下错误:
-EADDRNOTAVAIL /* Cannot assign requested address */

解决办法

vim /etc/sysctl.conf

打开文件,写入下面内容

net.ipv4.tcp_syncookies = 1  # 开启syncookies,防止网络泛洪攻击
net.ipv4.tcp_fin_timeout = 30  # fin超时时间
net.ipv4.tcp_max_tw_buckets = 262144  # time_wait池
net.ipv4.tcp_tw_reuse = 1  # time_wait重用
net.ipv4.tcp_tw_recycle = 1  # time_wait快速回收
net.core.somaxconn = 65535  # 默认128,增加半连接(backlog)池大小,当池中请求大过这个时会拒绝连接
net.ipv4.ip_local_port_range = 1024 65535  # 默认32768 60999,防止并发是端口不够用

更多参考文档https://help.aliyun.com/document_detail/41334.html#TxtER

posted @ 2022-06-26 13:22  TY520  阅读(179)  评论(0编辑  收藏  举报