## 内核相关网络参数(/etc/sysctl.conf)
## 增加连接数
1. net.core.somaxconn = 65535
2. net.core.netdev_max_backlog = 65535;
3. net.ipv4.tcp_max_syn_backlog = 65535;
## 加快TCP回收效率
```
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
```
## 缓冲区接受的默认值和最大值
```
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
```
## 失效连接所占用TCP系统资源,加快系统回收的效率
~~~
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=3
~~~
## 内存相关的参数
~~~xml
+ kernel.shmmax=4294967295
Linux 内核参数中最重要的参数之一,用于定义单个共享内存段的最大值。
> 注意:
1. 这个参数应该设置的足够大,以便能在一个共享内存段下容纳下整个
的Innodb缓冲池的大小。
2. 这个值的大小对于64位linux系统,可取的最大值为物理内存值-1byte,
建议值为大于物理内存的一半,一半取值大于Innodb 缓着冲池的大小即可,
可以去物理内存-1byte。
+ vm.swappiness=0
这个参数当内存不足时会对性能参数比较明显的影响
Linux系统内存交换区:
在Linux系统安装时都会有一个特殊的磁盘分区,称之为系统交换分区。
使用 free -m 在系统中可以看到类似下面内容其中swap就是交换分区。
当操作系统因为没有足够内存时就会将一些<font color="red">虚拟内存
</font>写到<font color="red">磁盘的交换区</font>中这样就会发生
内存交换
在MySQL服务器上是否要使用交换分区有一些争议:
在MySQL服务所在的Linux系统上完全禁用交换分区。
带来的风险:
1. 降低操作系统的性能
2. 容易造成内存溢出、崩溃,或都被操作系统Kill掉
结论:
在MySQL服务器上保留交换区还是很必要的,但是要控制何时使用交换分区
vm.swappiness=0就是告诉Linux内核除非虚拟内存完全满了,否则不要使用交换区。
~~~
## 增加资源限制(/etc/security/limit.conf)
~~~css
这个文件实际上是Linux PAM 也就是插入式认证模块的配置文件。
打开文件数的限制。
* soft nofile 65535
* hard nofile 65535
加到limit.conf 文件末尾就可以了
* 表示对所有用户有效
soft 指的是当前系统生效的设置
hard 表明系统中能设定的最大值
nofile 表示所限制的资源是打开文件的最大数目
65535 就是限制的数量
结论:
把可打开的文件数量增加到了65535个以保证可以打开足够多的文件句柄。
注意:
这个文件的修改需要重启系统才可以生效。
~~~
## 磁盘调度策略(/sys/block/devname/queue/scheduler)
~~~php
cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
noop(电梯式调度策略)
NOOP实现了一个FIFO队列,它像电梯的工作方法一样对I/O请求进行组织,当
有一个新的请求到来时,它将强求合并最近的请求之后,以此来保证请求同一
介质。NOOP倾向饿死读而利于写,因此NOOP对于闪存设备、RAM及嵌入式系统
是最好的选择。
deadline(截止时间调度策略)
Deadline确保了再一个截止时间内服务请求,这个截止时间是可调整的,而
默认读期限短语写期限。这样就防止了写操作因为不能被读取而饿死的现象,
Deadline对数据库类应用是最好的选择。
anticipatory(预料I/O调度策略)
本质上与Deadline一样,但在最后一次读操作后,要等6ms,才能继续进行对
其它I/O请求进行调度。他会在每个6ms中插入行的I/O操作,而会将一些小写
入流合并成一个大写入流,用写入延时换区最大的写入吞吐量。AS适合于*写
入较多的环境*,比如文件服务器,AS对数据库环境表现很差。
~~~
- 实例和故事
- 大表
- 大事务
- 什么影响了MySQL性能
- 影响性能的几个方面
- CPU资源和可用内存大小
- 磁盘的配置和选择
- centos系统参数优化
- 文件系统对性能的影响
- MySQL体系结构
- 概述
- myisma
- innodb
- csv
- archive
- memory
- MySQL服务器参数
- 概述
- 内存配置相关参数
- IO相关参数配置
- 安全相关配置参数
- 其他常用配置参数
- 数据库设计对性能的影响
- 总结
- MySQL基准测试
- 基准测试
- 如何进行基准测试
- 基准测试实例
- 基准测试工具之mysqlslap
- 基准测试工具之sysbench
- MySQL数据库结构优化
- MySQL高可用架构设计
- 数据库索引优化
- SQL查询优化
- 数据库的分库分表
- 数据库监控