美文网首页
Linux系统内核优化

Linux系统内核优化

作者: 最底层的技术渣 | 来源:发表于2019-05-27 00:55 被阅读0次
    写在最前面的话:

    最近由于项目的要实现无限级代理的模式,加上要实时统计业绩等等一些业务逻辑,导致对性能这块要求比较高一些,所以趁着这个机会呢,也分享一下实践后和综合一些资料之后的笔记,写得不一定很完美,但是也希望对有需要的朋友一丝丝的帮助。

    分析:

    大多数MySQL都部署在linux系统上,所以操作系统的一些参数也会影响到MySQL性能,以下对linux内核进行适当优化。

    一、防止TCP存在大量的TIME_WAIT状态的连接

    1、查看连接数netstat -na|awk '/^tcp/ {++S[$NF]} END {for(i in S) print i,S[i]}'

    2、查找whereis sysctl.cnf


    3、执行命令 sysctl -a 查看当前系统中生效的所有参数
    4、修改vim /etc/sysctl.conf
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_max_tw_buckets = 5000
    

    TCP参数说明:

    net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

    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_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。默认是60s。

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

    net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

    net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

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

    4、然后执行以下命令让参数生效:/sbin/sysctl -p

    二、 在linux系统中,如果进程打开的文件句柄数量超过系统默认值1024,就会提示“too many files open”信息,所以要调整打开文件句柄限制,linux下ulimit参数调整。

    1、修改vim /etc/security/limits.conf * 代表所有用户,也可以指定用户,重启系统生效

    * soft nofile 65535
    * hard nofile 65535
    

    2、重启

    ulimit -SHn 65536
    ulimit -n
    

    相关文章

      网友评论

          本文标题:Linux系统内核优化

          本文链接:https://www.haomeiwen.com/subject/bhbqtctx.html