1.内核相关参数(/etc/sysctl.conf)

      参数说明:

#每个端口最大可以监听队列

net.core.somaxconn = 65535

 

#在每个网络接口接收数据报速率比内核处理速率快的时候,允许被发送到队列中的数据包的最大数目

net.core.netdev_max_backlog = 65535 

 

#还没获得连接的请求,在队列中允许保存的最大数目

net.ipv4.tcp_max_syn_backlog = 65535

 

# tcp等待状态时的等待时间(对于连接比较频繁的系统,这个很重要。可以增加TCP的回收速度)

net.ipv4.tcp_fin_timeout = 10

 

# 下面两个参数也可以增加TCP的回收速度

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

 

# 下面四个参数决定了TCP接收和发送的缓冲区大小

net.core.wmem_defalut = 87380

net.core.wmem_max = 16777216

net.core.rmem_default = 87380

net.core.rmem_max = 16777216

 

# 下面三个参数减少了失效连接对系统资源的占据

  # 用于判断连接是否有效

  net.ipv4.tcp_keepalive_time = 120

 

  # 没有接收到反应后,间隔一定时间进行重新发送

  net.ipv4.tcp_keepalive_intvl = 30

 

  #  在认定连接失效之前,发送多少个TCP的keepalive探测包

  net.ipv4.tcp_keepalive_probes = 3

 

  # 共享内存的最大值(这个参数应该设置的足够大,以便能在一个共享内存段下容纳整个的Innodb缓冲池的大小)

  kernel.shmmax = 4294967295

 

  #在MySQL服务器上是否要使用交换分区有一些争议:

    在MySQL服务所在的Linux系统上完全禁用交换分区

         => 带来的风险:

              1. 降低操作系统的性能

              2. 容易造成内存溢出,崩溃,或都被操作系统Kill掉

    所以,使用交换分区还是有必要的,只要我们可以控制何时使用交换分区

    vm.swappiness = 0

          就是告诉Linux内核除非虚拟内存完全满了,否者不要使用交换区

 


 

2.增加资源限制(/etc/security/limit.conf)

  limit.conf 这个文件实际上Linx PAM也就是插入式认证模块的配置文件

* soft nofile 65535
* hard nofile 65535

 *   表示对所有用户有效
soft  指的时当前系统生效的设置
hard 表明系统所能设定的最大值
nofile 表示所限制的资源时打开文件的最大数目
65535 就是限制的数量

 

注意:这个文件的修改需要重启系统才可以生效

 3.磁盘调度策略(/sys/block/devname/queue/scheduler)

Linux系统默认采用cfq策略,既是完全公平队列策略。而对数据库类应用最好的选择应该时Deadline