在linux上优化mysql运行环境让你对mysql更多了解 【百科全说】-今日足球竞猜

腾讯视频/爱奇艺/优酷/外卖 充值4折起

接触过mysql的都是知道它是数据库,很多用户知道如何使用mysql数据库,但对mysql运行环境的优化却知之甚少,如果你想要掌握mysql数据库,对mysql运行环境的优化也要了解一些,下面小编就给大家介绍下linux优化mysql运行环境的方法。



一、修改linux默认的io调度算法。

linux默认的io调度算法为cfq,需要修改为dealine,如果是ssd或者pcie-ssd设备,需要修改为noop,可以使用下面两种修改方式。

1、在线动态修改,重启失效。

echo “deadline” 》 /sys/block/sda/queue/scheduler

tips:这里的sda代表你需要修改的硬盘,根据你实际情况修改。

2、修改/etc/grub.conf,永久生效。

修改/etc/grub.conf配置文件,在kernel那行增加一个配置,例如:

kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=uuid=e01d6bb4-bd74-404f-855a-0f700fad4de0 rd_no_luks rd_no_lvm lang=en_us.utf-8 rd_no_md sysfont=latarcyrheb-sun1

6 crashkernel=auto keyboardtype=pc keytable=us rd_no_dm elevator=deadline rhgb quiet

主要关注elevator这个参数,设置内核的话需要重启系统才能生效。

最后可以通过 cat /sys/block/sda/queue/scheduler 观察一下,修改前和修改后的区别。

二、扩大文件描述符

这个是经常修改的参数,高并发的程序都会修改。

1、动态修改,重启失效,只能使用root,并且当前session有效。

ulimit -n 51200

2、修改配置文件,永久生效。

在/etc/security/limits.conf配置文件中增加一行

* hard nofile 51200

扩大可开启进程数 nprocess /etc/security/limits.conf

在/etc/security/limits.conf配置文件中增加一行

* hard nproc 51200

最后修改/etc/pam.d/login文件添加

session required /lib64/security/pam_limits.so

重启系统以后使用 ulimit -a 命令查看是否生效。

三、禁用numa特性

新一代架构的numa不适合跑数据库,它本意是为了提高内存利用率,但是实际效果不好,反而可能导致一cpu的内存尚有剩余,但是另外一个不够用,发生swap的问题,因此建议关闭或者修改numa的调度机制。

1、修改/etc/grub.conf关闭numa,重启后生效。

kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=uuid=e01d6bb4-bd74-404f-855a-0f700fad4de0 rd_no_luks rd_no_lvm lang=en_us.utf-8 rd_no_md sysfont=latarcyrheb-sun1

6 crashkernel=auto keyboardtype=pc keytable=us rd_no_dm elevator=deadline numa=off rhgb quiet

2、修改/etc/init.d/mysql或者mysqld_safe脚本,设置启动mysqld进程时的numa调度机制,例如。

在新版的mysqld_safe脚本中自带如下内容,所以不需要添加,你可以看看你的mysqld_safe脚本有没有如下内容。

if true && test $numa_interleave -eq 1

then

# locate numactl, ensure it exists.

if ! my_which numactl 》 /dev/null 2》&1

then

log_error “numactl command not found, required for –numa-interleave”

exit 1

# attempt to run a command, ensure it works.

elif ! numactl –interleave=all true

then

log_error “numactl failed, check if numactl is properly installed”

fi

# launch mysqld with numactl.

cmd=”$cmd numactl –interleave=all”

elif test $numa_interleave -eq 1

then

log_error “–numa-interleave is not supported on this platform”

exit 1

fi

四、修改swappiness设置

swappiness是linux的一个内核参数,用来控制物理内存交换出去的策略。它允许一个百分比的值,最小的为0,最大的为100,改值默认是60.可以通过下面命令观察

# sysctl -a | grep swappiness

vm.swappiness = 60

这个设置值到底有什么影响呢?

vm.swappiness设置为0表示尽量少使用swap,100表示尽量将inactive的内存页交换到swap里或者释放cache(cache类似于预读的文件)。

inactive内存的意思是程序映射着,但是”长时间”不用的内存。我们可以利用vmstat查看系统里面有多少inactive的内存。

# vmstat -a 1

procs ———–memory———- —swap– —–io—- –system– —–cpu——

r b swpd free inact active si so bi bo in cs us sy id wa st

0 0 16930764 192752 3673320 28601732 0 0 19 31 0 0 1 0 99 0 0

1 0 16930764 192752 3673320 28601732 0 0 0 0 1136 271 0 0 100 0 0

0 0 16930764 192748 3673320 28601732 0 0 0 56 1167 325 1 0 99 0 0

0 0 16930764 192740 3673320 28601732 0 0 0 40 1039 164 0 0 100 0 0

在centos7之前,这个值建议设置为0,但是在新版本的内核里面,这样设置可能导致oom(内存溢出),然后kernel会杀掉使用内存最多的mysqld进程。

所以现在这个值推荐设置为1,设置方法如下:

在/etc/sysctl.conf文件中增加一行。

vm.swappiness = 1

# sysctl -p //运行这个命令,让配置立刻生效。

五、优化文件系统挂载参数。

首先关于使用什么文件系统,网上很多测试,烟花缭乱。大概的结论如下。

xfs 》 ext3:xfs性能优于ext3

ext4 》 ext3:ext4性能优于ext3

ext4 ??? xfs :xfs和ext4谁更优秀?我说不太准…。。

然后就是挂载文件系统使用的参数:

defaults,noatime,nodiratime,barrier=0(在xfs上使用nobarrier)

文件系统挂载参数是在/etc/fstab文件中修改,重启时候生效。

noatime表示不记录访问时间,nodiratime不记录目录的访问时间。

barrier=0,表示关闭barrier功能.barrier的主要目的是为了保证磁盘写数据的安全性,但是会降低性能。如果有bbu之类的电池备份电源保证控制卡不瞬间掉电,那么这个功能就可以放心大胆的关闭。

可以通过一下命令,查看配置是否生效。

# cat /proc/mounts

rootfs / rootfs rw 0 0

proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0

sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0

devtmpfs /dev devtmpfs rw,seclabel,nosuid,relatime,size=8188388k,nr_inodes=2047097,mode=755 0 0

devpts /dev/pts devpts rw,seclabel,relatime,gid=5,mode=620,ptmxmode=000 0 0

tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev,relatime 0 0

/dev/sda3 / ext4 rw,seclabel,relatime,noatime,nodiratime,barrier=0,data=ordered 0 0

none /selinux selinuxfs rw,relatime 0 0

devtmpfs /dev devtmpfs rw,seclabel,nosuid,relatime,size=8188388k,nr_inodes=2047097,mode=755 0 0

/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0

none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0

/dev/sda1 /boot ext4 rw,seclabel,noatime,nodiratime,barrier=0,data=ordered 0 0

上面就是linux优化mysql运行环境的方法介绍了,通过对mysql运行环境的优化,能够减轻mysql的负载。

06/16 23:40
尽管linux在桌面计算的世界中还没有取得引人注目的进展,但作为网络服务器它已经小有名气了。由于其出色的可靠性,我们可以放心地在linux上运行当今internet时代所必需的各种重要服务程序。由此,linux最普遍的一些用途包括用作邮件服务器、web服务器以及dns服务器。 下面我们将研究怎样在red hat linux上使用bind建立一个dns服务器。bind(berkeley internet name domain)是一个在unix/linux系统上实现的域名解析服务软件包。我们将

linux下apache+mysql+php运行环境搭建教程

02/09 03:39
今天因为工具需要需要配置一个web环境,由于初次接触在linux内核系统中配置apache mysql php环境折腾了许久,下面整理了一篇安装教程与大家一起交流一下吧。 php之服务器环境搭建安装软件准备 1. apache224.tar.gz 2. php-5.2.9.tar.gz 3. mysql-5.1.54.tar.gz php和各个组件包 libxml2-2.6.30.tar.gz xml c语言版的解析器 libmcrypt-2.5.8.tar.gz 加密算法扩展库 zlib-1.
03/11 07:59
php版本:php-5.3.2-win32-vc6-x86,vc9是专门为iis定制的,vc6 是为了其他web服务软件提供的,如 apache。我下载的是zip包 下载地址 mysql版本:windows (x86, 32-bit), msi installer essentials – recommended,即mysql community server 5.1.45 下载地址 apache版本:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2,openss

openbsd4.1+apache+mysql+php 环境配置

09/07 22:21
环境: winxp vm5 openbsd4.1 apache2.0.55 mysql4.1.21 php4.4.4 discuz6.0_utf8 1.安装openbsd4.1,确认原来的apache停止服务(修改/etc/rc.conf里的参数). 2.设置openbsd的ftp,把相关软件放上去. 3.安装mysql #tar zxvf mysql-4.1.21.tar.gz #cd mysql-4.1.21 #./configure --prefix=/usr/local/mysql --
03/02 19:19
近年来linux在服务器市场占有比例日渐攀升,除了缘于linux的免费和安全性之外,还因为linux上的应用服务日益丰富。大部分常见的服务都在linux上有了较好的竞猜计算器足球胜平的解决方案。而对于intenet上应用最广泛的web服务来说,linux的表现就更为出色。 谁也无法说 清internet上究竟有多少个网站,但在众多网站中,采用php和jsp开发的网站无疑占居了极大的市场份额。下面就介绍一下如何在linux上架设支持jsp php mysql的web服务器。 对于web服务,apache无疑是首选

freebsd9.1源码安装apache.mysql.php环境(亲侧通过)

07/12 06:53
新手不建议用源码安装,请慎重 1.安装9.1系统 2.通过sysinstall安装预装软件 ========================================================= 3.安装linux_libio兼容包 rc.conf 增加一句linux_enable=true 应该是 linux_enable="yes" ======================================================== 4.通过ports安装ssh守护进
05/12 12:56
本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的error,不停的google折腾了半天终于看到了phpinfo。在此把遇到的问题总结一下,给大家提供一个参考。 我的os是ubuntu 9.10,得益于apt-get强大的功能参考了一下这篇文章http://wiki.ubuntu.org.cn/index.php?title=apache&variant=zh-cn#.e5.ae.89.e8.a3.85lamp,轻松的完成了lamp的搭建。 来手痒痒的不行,把环境
09/01 17:28
在red hat 9.0上配置qq的经验。 选择qq软件 腾迅公司并没有推出专门应用于linux下的qq软件,但是已经有很多自由软件或插件支持在linux下使用qq。这些软件都可以在internet上获得,常用的有gaim openq、gaim libqq和lumaqq等。gaim libqq和gaim openq都是在gaim中添加qq插件,所以必须注意gaim与qq插件的版本对应关系。 gaim与libqq的版本对应关系举例如下: libqq-0.0.1-0.48.so适用于gaim 0
11/23 07:28
1. jdk 进入安装目录 #cd /home #cp jdk-1_5_0_02-linux-i586.rpm /usr/local #cd /usr/local 给所有用户添加可执行的权限 #chmod x jdk-1_5_0_02-linux-i586.rpm.bin #./jdk-1_5_0_02-linux-i586.rpm.bin 此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限 #chmod x jdk-1_5_0_02-lin