常用系统优化参数

目录

1 简介

2 常用参数 

  2.1 /proc 文件系统与 sysctl

  2.2 配置文件

  2.3 常用内核参数

  2.3.1 kernel:/proc/sys/kernel/

  2.3.2 虚拟内存:/proc/sys/vm/

  2.3.3 文件系统:/proc/sys/fs/

  2.3.4 网络:/proc/sys/net/ipv4/

  2.4 资源控制参数

3 方案举例

  3.1 Oracle 内核参数调优

  3.2 Weblogic 网络调优

4 常见故障处理

  4.1 资源不可用

  4.1.1 问题现象

  4.1.2 原因分析

  4.1.3 解决方法

  4.2 VFS: file-max limit xxxxxx reached

  4.2.1 问题现象

  4.2.2 原因分析

  4.2.3 解决方法

  4.3 Too many open files

  4.3.1 问题现

  4.3.2 原因分析

  4.3.3 解决方法


简介

本文介绍常用的系统优化方法以及与系统资源相关的问题处理。

常用参数

/proc 文件系统与 sysctl

/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux 内核空间和用户空间之间进行通信;sysctl 是一个实时调整内核参数的工具,它依赖于 /proc,通过操作 /proc/sys/ 目录内的内容达到动态调整内核参数的目的。

sysctl 命令参数中的参数名称与 /proc/sys/ 下的目录结构相对应,例如:

sysctl 的 net.ipv4.conf.all.send_redirects 对应 /proc/sys/net/ipv4/conf/all/send_redirects

相应的调整方法也是对应的,例如:

sysctl -w net.ipv4.conf.all.send_redirects=0 等效 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

配置文件

§ /etc/sysctl.conf,这是 sysctl 预加载的配置文件,语法如下:

#注释

;注释

参数 

§ /etc/security/limits.conf,这是 pam_limits 模块的配置文件,通过 pam_limits 模块可以控制用户的系统资源分配,语法如下:

#用户或者组   软硬限制       资源的类型     限制资源的大小 

 <>        <类型>        <资源>        <>

常用内核参数

kernel/proc/sys/kernel/

参数

说明

pid_max

最大的进程ID 号数值,如果达到此值,下个进程的ID 将从最小值开始

panic

kernel panic发生时,等待重启的时间,单位为秒,如果使用software watchdog,建议值为60

shmall

全部允许使用的共享内存大小,单位为 bytes

shmmax

单个段允许使用的大小,单位为 bytes

shmmni

系统的内存segment的总数

sysrq

内核中断值,为禁用,1为完全启用,大于为部分启用

pty/max

最大伪终端数值

pty/nr

目前已分配的伪终端值

虚拟内存:/proc/sys/vm/

参数

说明

nr_hugepages

系统大内存页最大限制数,关于大内存页

文件系统:/proc/sys/fs/

参数

说明

aio-max-nr

最大异步IO限制

aio-nr

当前已调用异步IO

file-max

最大文件描句柄数限制

file-nr

第一个数值表示内核已分配的文件句柄数,第二个数表示文件句柄已经分配但是目前没被使用,第三个数值即file-max

网络:/proc/sys/net/ipv4/

参数

说明

icmp_echo_ignore_all

屏蔽所有 icmp 消息,表示关闭, 表示打开

ip_forward

ip 转发,表示关闭,表示打开

tcp_keepalive_time

tcp 保持连接的时间,单位为秒,默认值是 7200

tcp_keepalive_probes

探测tcp 连接是否存活的尝试次数,默认值为 9

tcp_keepalive_intvl

每次探测tcp 连接是否存活的间隔时间,单位为秒,默认值为 75

tcp_max_syn_backlog

未获得客户端确认的tcp 连接请求,需要保存在队列中最大数目

资源控制参数

资源类型

说明

core

生成的 core 文件的大小限制,单位为 KB

data

最大的 data 的大小,单位为 KB

fsize

最大的文件大小,单位为 KB

memlock

最大的锁定内存地址空间,单位为KB

nofile

最大文件打开数

rss

max resident set size (KB)

stack

最大堆栈大小,单位为 KB

cpu

最大CPU 时间,单位为分钟

nproc

最大进程数

as

地址空间限制

maxlogins

此用户的登录次数限制

maxsyslogins

此系统的登录次数限制

priority

用户进程的优先级别

locks

此用户的最大文件锁

sigpending

最大等待信号量数

msgqueue

POSIX 消息队列所能使用的最大内存,单位为 bytes

nice

最大的nice 值限制

rtprio

最大实时优先级别

方案举例

Oracle 内核参数调优

Weblogic 网络调优

常见故障处理

资源不可用

问题现象

用户执行su - root 时,提示”can not set user id:资源不可用“

原因分析

这个错误是因为普通用户不能再创建系统进程,即 fork() 调用失败。

解决方法

1、可以通过执行如下两条命令,来查看僵尸进程:

# ps auxwwf |grep -i defunct

2、而如果发现有僵尸进程,需要考虑以下几点:

2.1 条件允许的话,建议您直接重启机器;

2.2 建议您检查应用情况,查看产生僵尸进程的原因,才能从根本上解决问题;

2.3 最后,按照“步骤三”方法适当将limits.conf文件中的oracle两个软限制调大一些。

3、如果没有发现僵尸进程,调整该普通用户的系统资源限制:

3.1 打开 /etc/security/limits.conf,修改里面如下内容:

user  hard  nproc   16384

user  soft  nproc   8191

其中的 user  soft  nproc   2047nproc 是单个用户可用的最大进程数。系统默认的软限制是8091,您把这一项调大一些,最大为不超过hard 行的值

3.2 重新登录此用户,执行 ulimit -u 验证。

VFS: file-max limit xxxxxx reached

问题现象

在系统日志中,可以看到类似下面的信息:

kernel: VFS: file-max limit xxxxxx reached

 

原因分析

系统中打开的文件数已经达到内核 fs.fs-max 的限制;

解决方法

1、打开 /etc/sysctl.conf,添加或修改 fs-max 值:

fs.file-max = 65535

2、修改完毕后,执行 sysctl -p 生效,执行如下命令验证:

# cat /proc/sys/fs/file-max

Too many open files

问题现象

执行任何命令终端都报出:Too many open files 的错误;

原因分析

文件打开数已经达到此用户的最大限制;

解决方法

1、打开 /etc/security/limits.conf,添加或者修改如下内容:

user     soft    nofile      1024 

user     hard    nofile      65536

修改 user     soft    nofile      1024 里面的1024,此值不应超过 hard nofile 里的值

2、重新登录,执行 ulimit -n 验证。

 


你可能感兴趣的:(常用系统优化参数)