MySQL 是一个很棒的 open source 数据库引擎,大部分的网站和博客都是由 MySQL 驱动的。MySQL 的默认安装占用的内存资源比较大(相对于一个只有 64MB 的 VPS来说),优化 MySQL 可以减少内存消耗,把更多的内存省下来留给其他程序。
MySQL 的配置文件在 /etc/mysql/my.cnf(Debian 5),为了方便调整配置,MySQL 为小资源系统提供了一个叫做 my-small.cnf 的配置文件,是给小于 32MB 内存的服务器设置的。我们可以在这个配置文件的基础上作小部分的调整。
先找到 /usr/share/doc/mysql-server-5.0/examples/my-small.cnf,然后覆盖 /etc/mysql/my.cnf(Debian)。如果是 CentOS 5 的话,路径是:/usr/share/doc/mysql-server-5.0.45/my-small.cnf,覆盖 /etc/my.cnf。
参数说明
如果不使用 BDB table 和 InnoDB table 的话,加入下面2行关闭不需要的表类型很有必要,关闭 innodb 可以省下大量内存,虽然 InnoDB 好处多多但是在一个64MB的 VPS 上并不能体现出来,并且很占内存。
skip-bdb
skip-innodb
key_buffer 是优化性能的重要参数,用来缓存 tables keys 和 indexes,增加这个值可以更好的处理索引,读和写都需要索引。这里设设置成 16K 足够了。table_cache 是所有线程打开的表的数量,增加值可以增大 MySQL 的文件描述符数量,避免频繁的打开表,原始 my-small.cnf 中 table_cache 设置成4有点小,一个 wordpress 的页面通常会涉及到10个左右的表,其他的程序比如 Drupal,MediaWiki 会涉及到更多,将table_cache改为8。
key_buffer = 16K
table_cache = 8
max_connections 是数据库最大的连接数量,可以根据自己博客/网站的访问量来定这个值。如果博客/网站经常出现:Too many connections 错误的信息说明需要增大 max_connections 的值。thread_concurrency 是最大并发线程数,通常设置为 CPU核数量×2,在 VPS 宿主机上如果服务器有2颗物理 CPU,而每颗物理 CPU 又支持 H.T 超线程(一个处理器上整合了两个逻辑处理器单元),所以实际取值为4 × 2 = 8。
如果我们在优化 php.ini 的时候设置了同时只有2个 php-cgi 运行的话,那么我们也应该只设置2个 MySQL 线程同时运行。
max_connections = 16
thread_concurrency = 2
对于博客/新闻网站来说,用得最多的就是查询,所以需要加入 query cache 的设置。query_cache_size 是执行查询所使用的缓冲大小。
query_cache_limit = 256K
query_cache_size = 4
Mthread_stack 用来存放每个线程的标识信息,如线程 id,线程运行时环境等,可以通过设置 thread_stack 来决定给每个线程分配多大的内存。
sort_buffer_size 是每个需要排序的线程分配的缓冲区大小,增加该值可以加速 order by 和 group by 的操作。注意:该参数是以每个连接分配内存,也就是说,如果有16个连接,sort_buffer_size 为 64K,那么实际分配的内存为:16 × 64K = 1MB。如果设置的缓存大小无法满足需要,MySQL 会将数据写入磁盘来完成排序。因为磁盘操作和内存操作不在一个数量级,所以 sort_buffer_size 对排序的性能影响很大。
read_buffer_size 是顺序读取数据时的缓冲区大小,与 sort_buffer_size 一样,该参数分配的内存也是以每连接为单位的。read_buffer_size 是用来当需要顺序读取数据的时候,如无发使用索引的情况下的全表扫描,全索引扫描等。在这种时候,MySQL 按照数据的存储顺序依次读取数据块,每次读取的数据快首先会暂存在 read_buffer_size 中,当 buffer 空间被写满或者全部数据读取结束后,再将 buffer 中的数据返回给上层调用者,以提高效率。
read_rnd_buffer_size 是随机读取数据时的缓冲区大小,与顺序读相对应。
net_buffer_size 用来存放客户端连接线程的连接信息和返回客户端的结果集的缓存大小。当 MySQL 接到请求后,产生返回结果集时,会在返回给请求线程之前暂存在在这个缓存中,等积累到一定大小的时候才开始向客户端发送,以提高网络效率。不过,net_buffer_size 所设置的仅仅只是初始大小,MySQL 会根据实际需要自行申请更多的内存,但最大不会超过 max_allowed_packet。
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64
Kskip-locking用来避免 MySQL 外部锁定,减少出错几率,增强稳定性。
skip-locking优化后配置
经优化后,my.cnf 的配置如下,top 查看 mysqld 保持在 5M 一下。
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 16K
query_cache_limit = 256K
query_cache_size = 4M
max_allowed_packet = 1M
table_cache = 8
max_connections = 16
thread_concurrency = 2
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
skip-bdb
skip-innodb
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer = 8M
sort_buffer_size = 8M
[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout内存计算公式
MySQL memory = key_buffer + max_connections *
(join_buffer + record_buffer + sort_buffer + thread_stack + tmp_table_size)
分享到:
相关推荐
### 2G内存的MySQL数据库服务器优化 在IT行业中,对于资源有限的环境进行数据库优化是一项挑战性工作,尤其是在仅有2GB内存的情况下对MySQL数据库服务器进行优化。这种优化旨在提高性能的同时确保系统的稳定运行。 ...
下面VPS侦探说一下几个解决方法: MySQL数据库导出 方法1:mysqldump命令 执行命令: /usr/local/mysql/bin/mysqldump -u 用户名 -p 数据库名 》 文件名 如果数据库用户名有密码密码,执行后会提示输入密码。如果...
对其用户和应用程序来讲,每... 下面,以我的博客所在的VPS为例,介绍在128M内存下对 Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 的优化。 至于 Nginx + PHP + MySQL 的安装配置,可参见:《Nginx 0.7.x + PHP 5.2
2、以安全模式启动MySQL Linux下,运行 /usr/local/mysql/bin/mysqld_safe –skip-grant-tables & Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe –skip-grant-tables 3、完成以后就可以不用密码进入MySQL...
虽然开始在MySQL5.5.8的编译过程中遇到了一些问题,因为之前从未接触过Cmake方式的编译,在查阅官方手册并结合谷歌,终于把问题搞定了。 目前Nginx的worker_processes设置为4,php-fpm设置为dynamic模式,max_...
是一套国产的Linux和Unix服务器管理软件,支持Nginx、Tengine、Apache,可以切换PHP5.2X和PHP5.3X,快速创建网站、MysqL数据库、域名绑定等建站功能齐全,程序还附带了一些PHP和服务器优化功能。 LuManager支持...
主机要求:IIS/APACHE/NGINX均可,虚拟主机/VPS/服务器/云服务器均可。推荐使用linux系统,apache/nginx均可硬件要求:CPU/内存/硬盘/宽带大小无要求,但配置越高,采集效率会更好! 安装方法: 上传程序致根目录,...
最新版优化修复任务悬赏兼职系统源码已对接平安夜易支付,有短信接口文件。 前期准备: 1、服务器(您自行到阿里云等云主机供应商购买VPS,推荐配置2核2G+50G硬盘+5M+Windows server 2008 R2 64位) 2、域名 3、个人...
[安装系统(精简优化+安装Nginx+安装PHP)] bash sb system [安装GD库] bash sb gd [卸载GD库] apt-get -y purge php5-gd [安装Sqlite] bash sb sqlite [卸载Sqlite] apt-get -y purge php5-sqlite sqlite3 [安装Mysql...
在创建网站时询问MySQL数据库名称db-name =真 在创建网站时询问MySQL用户名db-user =真 [wordpress] 在创建网站时要求WordPress前缀前缀=真 WordPress网站的用户名用户=用户管理员 WordPress网站的密码密码= ...
此源码是深度SEO优化自动采集一键...主机要求:IIS/APACHE/NGINX均可,虚拟主机/VPS/服务器/云服务器均可。推荐使用linux系统,apache/nginx均可硬件要求:CPU/内存/硬盘/宽带大小无要求,但配置越高,采集效率会更好!
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。 Nginx 安装非常的简单,配置文件 非常简洁(还...
对于初次使用者,Easypanel会在设置之初要求配置服务器的基本信息,如IP地址、端口号等,以确保系统的正常运行。同时,用户可以根据需要自定义设置,如设置FTP端口、SSL证书等,以满足不同的服务需求。 总的来说,...
2. 在Linux 64位CentOS 5.x/6.x系统上,停止当前VPS服务。 3. 更换或刷新操作系统,确保与TengineRPM兼容。 4. 执行TengineRPM提供的安装脚本,例如`wget ...
本文要介绍的Kloxo-MR是Kloxo的优化版本,修改设计了Kloxo界面,同时对建站功能也强化了不少。 Kloxo-MR目前只支持在Redhat/CentOS 5 和 6 (32bit 或 64bit)上安装,可以安装Nginx, Nginx-Pro@xy 和 Lighttpd-pro@xy...
对于国外或者美国VPS,推荐使用下载版,而国内VPS则推荐使用完整版。下载命令如下: - 下载版:`wget -c http://soft.vpser.net/lnmp/lnmp0.9.tar.gz` - 完整版:`wget -c ...
GBBS属于微论坛或贴吧,继承论坛的即时、自由、信息发布等功能,可做新闻、信息发布、文章发布、微相册、问答系统之用,易管理、易操作、易搭建、易修改,拿来即用,适合中小型企业和站长使用。 1、系统分access/...
程序通用性良好,各种云主机、VPS以及应用程序引擎(BAE/JAE/SAE等)均可轻松部署。 ## 主要特性 - 内置模型:栏目、标签、文章、专题、友情链接等 - 数据库:使用SQLAlchemy驱动,主要支持SQLITE和Mysql两种...
4、优化更多细节,首页优化,内页优化,css布局等。。。 5、http://域名/install 进行安装,(需要申请API) 6、模板文件\Client\Home\View\2017(可自定义模板) 环境要求 Linux/Unix 平台 需要PHP5.6及以上...