`

通讯系统经验谈【三】解读内核参数 - sysctl.conf

 
阅读更多

在上一篇中http://maoyidao.iteye.com/blog/1744309,主要介绍了和系统资源限制相关的参数。本文是通讯系统经验谈的第三部分,继续解读和系统性能相关的内核配置。

 

上篇介绍了和系统设置有关的几个参数,在一台系统上,连接到一个服务时的本地端口是有限的。由于端口是16位整数,也就只能是0到65535,而0到1023是预留端口,所以能分配的只是 1024到65534,也就是64511个。也就是说,一台机器只能创建六万多个长连接。查看本机端口设置:

maoyidao 写道
sysctl -a | grep port_range
net.ipv4.ip_local_port_range = 1024 65000

/etc/sysctl.conf配置

1. syncookies

net.ipv4.tcp_syncookies = 1

 防止 SYN Flooding攻击,详见:http://maoyidao.iteye.com/admin/blogs/1744277

2. syn-ack

#net.ipv4.tcp_synack_retries=
# net.ipv4.tcp_syn_retries=

maoyidao注:syn-ack握手状态重试次数,默认5,网上有朋友说可改为1或2;通常我的建议是如果没有试验证明在特定场景下明显优势,不要修改默认值,因此本场此参数未指定

3. 内核消息/内存管理设置

kernel.msgmnb = 65536

kernel.msgmax = 65536

 

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

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

即从一个进程发送到另一个进程的消息的最大长度(bytes),进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。

 

maoyidao注:增大消息队列内存值,提高IPC效率

 

kernel.shmmax = 68719476736

Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。32bit系统中可以设置为系统可支撑的最大值:4G;本系统中设置为64G(这个值实际上超过了前端机的最大内存12G),内存型服务器,比如96G,或128G服务器应该设置的更大。

 

kernel.shmall = 4294967296

含义:系统中共享内存页总

getconf PAGESIZE

4096

total bytes = 4294967296 * 4096 = 16G

4. 网络设置

三个整数的向量: min, default, max

net.ipv4.tcp_rmem = 8192 87380 8738000

min = 4k (same as pagesize), default = 64k, max = 6.25m

net.ipv4.tcp_wmem = 4096 65536 6553600

#

#

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

 

以上参数的配置可以参考:

 

http://fasterdata.es.net/host-tuning/linux/ 写道
# increase TCP max buffer size settable using setsockopt()
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# increase Linux autotuning TCP buffer limit
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
 

# 安全策略

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.ip_no_pmtu_disc = 1

 

# 含义:当启用keepalive的时候,TCP发送keepalive消息的频度

net.ipv4.tcp_keepalive_time = 1800

 

# Controls IP packet forwarding

# 作为前端服务器,禁制IP转发,这个没什么好说的;

net.ipv4.ip_forward = 0

 

# Controls source route verification

# 开启反向路径过滤

net.ipv4.conf.default.rp_filter = 1

 

# 含义:记录的那些尚未收到客户端确认信息的链接请求的最大值。 默认值为4096 如果设置这个值大于4096最好同时调

# 整include/net/tcp.h中的TCP_SYNQ_HSIZE,保证TCP_SYNQ_HSIZE*16 小于或等于tcp_max_syn_backlo,

# 然后重新编译内核。

net.ipv4.tcp_max_syn_backlog = 8192

0
0
分享到:
评论

相关推荐

    sysctl.conf优化方案

    sysctl.conf优化方案,非常详细,是播布客上一位老师写出来的总结。

    sysctl.conf中文参数指南[收集].pdf

    sysctl.conf是Linux系统中的一份核心配置文件,用于控制和设置系统的各种参数。下面是sysctl.conf文件中的重要参数解释: 1. dev.scsi.logging_level = 0 这个参数控制SCSI设备的日志级别。设置为0表示不记录任何...

    如何设置Sysctl.conf用以提高Linux的性能(最完整的).docx

    通过合理设置`/etc/sysctl.conf`文件中的各项参数,可以显著提高Linux系统的性能和安全性。然而,在进行任何更改之前,务必详细了解每个设置的影响,并在必要时进行测试,以确保不会对系统造成不利影响。

    sysctl.conf的优化方案

    网上关于sysctl.conf的优化方案有各种版本,大多都是抄来抄去的,让新人看了很迷茫

    sysctl.conf:我们的服务器端 sysctl.conf 内核参数,如当前部署

    sysctl.conf是一个至关重要的配置文件,它在Linux系统中扮演着调整内核参数的角色。通过对sysctl.conf的精细调整,我们可以优化服务器性能,提升安全性,以及确保系统的稳定运行。本文将详细探讨sysctl.conf的结构、...

    entos安装Oracle11g所需软件包compat-libstdc++-33-3.2.3-72.el7.x86-64、lib

    5. **调整系统参数**:Oracle数据库需要一些特定的系统参数,如内存限制和最大文件句柄数,需要在`/etc/sysctl.conf`中进行调整,并通过`sysctl -p`应用更改。 6. **创建挂载点**:为Oracle数据库创建一个挂载点,...

    sysctl-cookbook-源码.rar

    《sysctl-cookbook》是一本深入探讨Linux系统调用`sysctl`的书籍,其源码rar压缩包包含了丰富的实践示例和详细解释。`sysctl`是Linux内核提供的一种机制,允许用户空间程序动态调整内核参数,从而对系统行为进行微调...

    Redis-3.pdf

    - **5.3 OOM 相关**:避免 Redis 在内存不足时被系统杀死,需要设置 `/etc/sysctl.conf` 文件中的 `vm.overcommit_memory` 参数为 `1`。 - **5.4 透明大页设置**:通过编辑 `/etc/sysctl.conf` 文件,添加如下内容...

    performance-tuning:性能调整调整高并发低延迟内核调整sysctl.conf

    "sysctl.conf"文件是Linux系统中的一个重要配置文件,它允许管理员调整内核参数以优化系统性能。本篇文章将深入探讨如何通过调整`sysctl.conf`来优化高并发、低延迟环境的性能。 首先,我们需要理解`sysctl.conf`的...

    puppet-sysctl-0.0.11-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    Linux-install-oracle.pdf

    通过编辑`/etc/sysctl.conf`文件,调整内核参数以满足Oracle对共享内存、信号量和文件描述符的需求,例如: ``` kernel.shmmax=2147483648 kernel.shmmni=4096 kernel.shmall=2097152 kernel.sem=250 32000 100 128 ...

    oracle11g设置内核参数和limit的增强

    传统的Oracle数据库安装过程中,数据库管理员(DBA)需要手动编辑`/etc/sysctl.conf`和`/etc/security/limits.conf`这两个关键文件来调整操作系统级别的内核参数和资源限制。这种做法不仅耗时费力,而且容易出现人为...

    linux命令sysctl使用.docx

    * -p:从配置文件 /etc/sysctl.conf 加载内核参数设置 * -a:打印当前全部可用的内核参数变量和值 * -A:以表格方式打印当前全部可用的内核参数变量和值 参数是变量=值的形式,例如 kern.maxproc=1044。 实例 ----...

    Centos6.4安装Oracle11G

    在`/etc/sysctl.conf`文件中添加或修改以下内核参数: ```bash # 如果存在,请确保值不小于下面设定的值 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.accept_redirects = 0 ...

    终极版Deepin静默安装oracle.docx

    vim /etc/sysctl.conf 修改内容如下: net.ipv4.ip_local_port_range= 9000 65500 fs.file-max = 6815744 kernel.shmall = 10523004 kernel.shmmax = 6465333657 kernel.shmmni = 4096 kernel.sem = 250 32000 ...

    oracle ebs R12 在linux 安装 12.1.1升级 安装中文语言包.docx

    修改 `/etc/sysctl.conf` 文件,以便对内核参数进行必要的调整,例如增加文件句柄数量等,这对于 Oracle EBS 的稳定运行至关重要。 #### 安装与升级步骤 1. **系统环境准备:** 遵循上述列出的操作系统和软件包需求...

    puppet-sysctl-0.0.12-2.a3d160dgit.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    puppet-sysctl-0.0.12-1.b3587fegit.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    puppet-sysctl-0.0.12-2.a3d160dgit.el8.noarch.rpm

    官方离线安装包,亲测可用

    oracle10g安装文档

    为了确保 Oracle 10g 的稳定运行,需要对系统的内核参数进行一定的优化: 1. **修改内核参数**: - 编辑 `/etc/sysctl.conf` 文件,添加或修改以下内容: - `kernel.shmall = 2097152` - `kernel.shmmax = ...

Global site tag (gtag.js) - Google Analytics