MYSQL性能优化之操作系统参数,文件系统

来源:互联网 发布:北京优化 编辑:程序博客网 时间:2024/06/04 18:32

许多人喜欢这样:
开发环境数据库放到window系统(大小写不敏感)上;
生产环境数据库放在Linux系统(大小写敏感)上,可以通过配置mysql参数来设置数据库小写;
还有另一种操作系统,FreeBSD(老版本对mysql的支持并不是很好),选择新的版本系统。
以稳定性著称的Solaris,系统本身提供了很多先进的功能和故障排除工具,以及良好的多线程。但是其应用性并不如linUx系统

当然最多的是使用的还是linux,linux大法好;
这里写图片描述

  • net.core.somaxconn = 262144 每个端口最大的监听队列的长度(默认值比较小2048)
  • net.core.netdev_max_backlog = 30000 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
  • net.ipv4.tcp_max_syn_backlog = 262144 表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。对于超过这个大小的包就会被抛弃
    这里写图片描述
  • net.ipv4.tcp_fin_timeout =10 用于控制TCP连接处理的等待状态的时间,对于连接比较频繁的系统 ,通常会有大量的处于等待状态的连接。这个参数减少timeout的时间,加快TCP的回收速度
  • net.ipv4.tcp_tw_reuse = 1 表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。
  • net.ipv4.tcp_tw_recycle = 1 开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
    如果TCP被沾满的情况下,可能出现无法连接服务器的情况
    这里写图片描述
    TCP连接接收和发送缓冲区大小的默认值和最大值,对于数据库的应用来说,调大

  • net.ipv4.tcp_wmen:这个参数定义了tcp 发送缓存(用于tcp发送滑动窗口)的最小值,默认值和最大值

  • net.ipv4.tcp_rmen:这个参数定义了tcp 接受缓存(用于tcp接受滑动窗口)的最小值,默认值和最大值
    这里写图片描述
    减少失效连接所占用的TCP系统资源的数量,加快资源回收的效率

  • net.ipv4.tcp_keepalive_time = 120 当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为2分钟(TCP发送keepalive探测消息的间隔,用于确认TCP连接是否有效)

  • net.ipv4.tcp_keepalive_intvl =30 探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约1.1分钟以后将被丢弃。(控制探测消息未获得响应时,重新发送消息的时间间隔)
  • net.ipv4.tcp_keepalive_probes =3 TCP发送keepalive探测以确定该连接已经断开的次数。(表示在认定TCP失效之前,发送多少个keepalive的探测消息)

关于内存比较重要的参数
这里写图片描述
这里写图片描述
这里写图片描述
如果设置过低,可能出现多个共享内存段,这样可能导致系统性能的下降
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
内存交换对于数据库服务器是透明的,只有操作系统知道特定的虚拟内存地址是物理内存还是在硬盘中,由于磁盘和内存的差异,一旦发生内存交换,对于mysql就会有灾难性的影响
这里写图片描述
这里写图片描述
增加资源限制
这里写图片描述
这里写图片描述
这里写图片描述
注意:这个文件的修改需要重启系统才可以生效,还有soft不能大于hard

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

文件系统
什么是文件系统,详见:http://zh.wikipedia.org/zh/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F
其实一句话就是管理这块文件的机制(组织方式,数据结构之类…)
这里写图片描述
这里写图片描述
不同的日志策略
writeback:cpu更新cache时,只是把更新的cache区标记一下,并不同步更新memory(后端存储)。只是在cache区要被新进入的数据取代时,才更新
memory(后端存储)。这样做的原因是考虑到很多时候cache存入的是中间结
果,没有必要同步更新memory(后端存储)。优点是CPU执行的效率提高,
缺点是实现起来技术比较复杂。(数据写入,元数据写入到日志,元数据写入并不是同步的,因为innoDB有自己的事务日志,所以最好的选择)
ordered:只会记录元数据,但是提供了一些一致性的保证,在写元数据之前,会先写数据,使其保持一致,稍微慢,不过如果出现崩溃会更加安全
journal:提供了原子日志的一种行为,写入到最终日志之前,将记录到日志中,对于innoDB来说没有必要,最慢。
noattime,nodiratime:禁止记录文件的访问时间和读取目录的时间

0 0
原创粉丝点击