linux优化之系统参数调优篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.用户限制配置文件(首先需要编辑/etc/security/limits.conf文件)
大家可以自行学习一下ulimit命令,查看当前操作系统中配置的参数:
[root@yinzhengjie ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 514421 max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1000000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 40960 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@yinzhengjie ~]#
我们大家都知道使用ulimit命令只能临时生效,重启操作系统后,配置会还原成默认值。如果想要配置永久生效,咱们可以修改对应的配置文件,即使重启操作系统,配置依旧生效!下图是我在生产环境中某线上服务的一个配置案例:(修改后,重新登陆当前会话后立即生效!)
[root@yinzhengjie ~]# cat /etc/security/limits.conf |egrep -v '^#|^$' * soft nofile 1000000 * hard nofile 1048576 * soft nproc 65536 * hard nproc unlimited * soft memlock unlimited * hard memlock unlimited [root@yinzhengjie ~]#
二.修改Linux内核/etc/sysctl.conf文件
其实,很多Linux的默认配置压根不符合我们的生产环境配置所需,有时候我们需要适当的调整一些内核参数,有时我们需要开启一些内核功能,有时我们需要关闭内核的某些功能。比如关闭ipv6,开启路由转发功能,关闭虚拟内存使用,套接字缓存大小调整等。我们需要根据自己的生产环境做出适当的分析,将一些默认值我们需要手动去配置一下,具体的参数信息大家可以自行百度,下面是我在生产环境中对某一个集群进行的调优参数配置:
[root@yinzhengjie ~]# cat /etc/sysctl.conf | egrep -v '^#|^$' net.ipv6.conf.all.disable_ipv6 = 1 vm.dirty_ratio = 80 vm.dirty_background_ratio = 5 vm.swappiness = 1 net.core.wmem_default = 256960 net.core.rmem_default = 256960 net.ipv4.tcp_wmem = 8760 256960 4088000 net.ipv4.tcp_rmem = 8760 256960 4088000 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.core.netdev_max_backlog = 2000 vm.max_map_count = 262144 [root@yinzhengjie ~]#
修改参数后,我们需要执行一条命令,就可以让他生效了,即“sysctl -p”
[root@yinzhengjie ~]# sysctl -p net.ipv6.conf.all.disable_ipv6 = 1 vm.dirty_ratio = 80 vm.dirty_background_ratio = 5 vm.swappiness = 1 net.core.wmem_default = 256960 net.core.rmem_default = 256960 net.ipv4.tcp_wmem = 8760 256960 4088000 net.ipv4.tcp_rmem = 8760 256960 4088000 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.core.netdev_max_backlog = 2000 vm.max_map_count = 262144 [root@yinzhengjie ~]#
三.