Linux 内核参数优化设置

上一篇 / 下一篇  2016-07-07 16:52:06 / 个人分类:中间件调优

1limits参数配置用来解决句柄数不够用可将下面值设置为默认值

  vi /etc/security/limits.conf

      #添加如下的行

*       soft   noproc 10240

*       hard   noproc 10240

*       soft   nofile 10240

*       hard   nofile 10240

说明:*代表针对所有用户

          noproc是代表最大进程数

          nofile是代表最大文件打开数

要使limits.conf文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。查看/etc/pam.d/login文件中有:

session required /lib/security/pam_limits.so

附录1centos 6.*可以修改/etc/security/limits.d/90-nproc.conf
但,centos 5.*并没有90-nproc.conf这个文件,我这边是通过修改/etc/security/limits.conf,在最后添加
* soft nproc 65535
* hard nproc 65535
来实现的

要是上面服务没有生效可以重启服务

sysctl -p

/etc/init.d/sshd restart

2当服务器出现大量的网络连接出现TIME_WAIT和端口不够用时,采用下面解决办法,可以设置为默认值

/etc/sysctl.conf加入下面几句话

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_keepalive_time = 1200   

net.ipv4.ip_local_port_range = 1024   65000  ##端口分配范围

net.ipv4.tcp_max_syn_backlog = 32768 ##这里是设置系统内存是4G为参考

#net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000  ##设置"time_wait"的桶最多容纳5000

添加完毕以后

sysctl -p让以上配置生效

下面是对上面的参数一个个作解释

net.ipv4.tcp_tw_reuse = 1

表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1

表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_syncookies=1

表示选开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies进行处理

net.ipv4.tcp_fin_timeout = 10

这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。

net.ipv4.tcp_keepalive_time = 1200

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

net.ipv4.ip_local_port_range = 1024 65000

表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为102465000

net.ipv4.tcp_max_syn_backlog = 32768

表示SYN队列的长度,.默认为1024(这个根据系统内存设置对比关系是对于128M内存设置时1024,加大队列长度为32768,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets = 5000

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000

3、下面参数是根据并发数值来调整(一般不建议调整)

net.core.somaxconn = 262144

net.core.netdev_max_backlog = 262144

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_rmem = 4096 4096 16777216  

net.ipv4.tcp_wmem = 4096 4096 16777216

net.ipv4.tcp_mem = 786432 2097152 3145728

net.ipv4.tcp_max_orphans = 131072

 

下面是对上面的参数一个个作解释

net.core.somaxconn

选项默认值是128这个参数用于调节系统同时发起的tcp连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此,需要结合并发请求数来调节此值。

 net.core.netdev_max_backlog

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

net.ipv4.tcp_max_orphans

选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立连接将立即被复位并打印出警告信息。这个限制只是为了防止简单的DoS攻击。不能过分依靠这个限制甚至人为减小这个值,更多的情况是增加这个值。

net.ipv4.tcp_rmem

用来配置读缓冲的大小,三个值,第一个是这个读缓冲的最小值,第三个是最大值,中间的是默认值。我们可以在程序中修改读缓冲的大小,但是不能超过最小与最大。为了使每个socket所使用的内存数最小,我这里设置默认值为4096

net.ipv4.tcp_wmem

用来配置写缓冲的大小。读缓冲与写缓冲在大小,直接影响到socket在内核中内存的占用

net.ipv4.tcp_mem

则是配置tcp的内存大小,其单位是页,而不是字节。当超过第二个值时,TCP进入pressure模式,此时TCP尝试稳定其内存的使用,当小于第一个值时,就退出pressure模式。当内存占用超过第三个值时,TCP就拒绝分配socket了,查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”。

net.ipv4.tcp_max_orphans

这个值也要设置一下,这个值表示系统所能处理不属于任何进程的socket数量,当我们需要快速建立大量连接时,就需要关注下这个值了。当不属于任何进程的socket的数量大于这个值时,dmesg就会看到”too many of orphaned sockets

4、当硬件出现瓶颈时才进行调整(一般不建议调整)

CPU性能调整

当一个系统的CPU空闲时间或者等待时间小于5%时,我们就可以认为系统的CPU资源耗尽,我们应该对CPU进行性能调整。

CPU性能调整方法:

编辑/proc/sys/kernel/中的文件,修改内核参数

#cd /proc/sys/kernel

# ls /proc/sys/kernel

acct hotplug panic real-root-dev

cad_pid modprobe panic_on_oops sem

cap-bound msgmax pid_max shmall

core_pattern msgmnb powersave-nap shmmax

core_uses_pid msgmni print-fatal-signals shmmni

ctrl-alt-del ngroups_max printk suid_dumpable

domainname osrelease printk_ratelimit sysrq

exec-shield ostype printk_ratelimit_burst tainted

exec-shield-randomize overflowgid pty threads-max

hostname overflowuid random version

一般可能需要编辑的是pid_maxthreads-max,如下:

# sysctl kernel.threads-max

kernel.threads-max = 8192

# sysctl kernel.threads-max=10000

kernel.threads-max = 10000

Memory性能调整

当一个应用系统的内存资源出现下面的情况时,我们认为需要进行Memory性能调整:

页面频繁换进换出;

缺少非活动页。

例如在使用vmstat命令时发现,memorycache使用率非常低,而swapsi或者so则有比较高的数据值时,应该警惕内存的性能问题。

Memory性能调整方法:

1。关闭非核心的服务进程。

相关的方法请见CPU性能调整部分。

2。修改/proc/sys/vm/下的系统参数。

# ls /proc/sys/vm/

block_dump laptop_mode nr_pdflush_threads

dirty_background_ratio legacy_va_layout overcommit_memory

dirty_expire_centisecs lower_zone_protection overcommit_ratio

dirty_ratio max_map_count page-cluster

dirty_writeback_centisecs min_free_kbytes swappiness

hugetlb_shm_group nr_hugepages vfs_cache_pressure

# sysctl vm.min_free_kbytes

vm.min_free_kbytes = 1024

# sysctl -w vm.min_free_kbytes=2508

vm.min_free_kbytes = 2508

# cat /etc/sysctl.conf

vm.min_free_kbytes=2058

3。配置系统的swap交换分区等于或者2倍于物理内存。

# free

total used free shared buffers cached

Mem: 987656 970240 17416 0 63324 742400

-/+ buffers/cache: 164516 823140

Swap: 1998840 150272 1848568


TAG: Linux linux

 

评分:0

我来说两句

日历

« 2024-04-09  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 5409
  • 日志数: 4
  • 建立时间: 2016-06-03
  • 更新时间: 2016-07-07

RSS订阅

Open Toolbar