DirectAdmin优化MySQL性能(升级TCMalloc及修改配置)

时间:12-07-01 栏目:VPS教程 作者:赵 容 评论:24 点击: 12,614 次

最近看到不少反应MySQL拖垮服务器资源的一些讨论,尤其是很多的个人博客站长采用wordpress源码,连发个评论都要写入MySQL数据库。虽然我无法从根本上解决这些问题,但是对于MySQL做一些简单的优化还是非常有必要的,下面,我们就以DirectAdmin面板下的MySQL优化为例来做一个简单的记录。

MySQL

关于本文的MySQL优化,我把他分为2个部分来做,包括升级TCMalloc以及修改MySQL配置文件。

★★★安装TCMalloc★★★

首先,我们来关注下如何安装TCMalloc来优化mysql在高负载下的表现。首先,root登陆服务器。因为我的服务器采用64位的Centos,所以,需要先安装libunwind库,32位系统可略过此步。

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz

tar zxvf libunwind-0.99-alpha.tar.gz

cd libunwind-0.99-alpha/

CFLAGS=-fPIC ./configure

make CFLAGS=-fPIC

make CFLAGS=-fPIC install

接下来,我们开始安装Tcmalloc。

wget http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz

tar zxvf  gperftools-2.0.tar.gz

cd gperftools-2.0/

./configure

make && make install

echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf

/sbin/ldconfig

编译完成后,我们编辑mysqld_safe文件,加入Tcmalloc部分。

vi /usr/bin/mysqld_safe

找到# executing mysqld_safe,在下面加入:

export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

保存,退出,重启MySQL。

service mysqld restart

接下来再检查是否生效,运行。

lsof -n | grep tcmalloc

若看到类似如下内容,即表示成功。

mysqld     7758     mysql  mem       REG              253,0   1943001  109233156 /usr/local/lib/libtcmalloc.so.4.1.0

★★★修改配置文件★★★

DirectAdmin默认的MySQL配置文件非常的简洁。

[mysqld]
local-infile=0
我们需要修改配置文件,参考下面的内容(vim /etc/my.cnf)
[mysqld]
local-infile=0

skip-locking

query_cache_limit=1M

query_cache_size=32M

query_cache_type=1

max_connections=500

interactive_timeout=100

wait_timeout=100

connect_timeout=10

thread_cache_size=128

key_buffer=16M

join_buffer=1M

max_allowed_packet=16M

table_cache=1024

record_buffer=1M

sort_buffer_size=2M

read_buffer_size=2M

max_connect_errors=10

# Try number of CPU's*2 for thread_concurrency

thread_concurrency=4

myisam_sort_buffer_size=64Mserver-id=1

[safe_mysqld]

err-log=/var/log/mysqld.log

open_files_limit=8192

[mysqldump]

quick

max_allowed_packet=16M

[mysql]

no-auto-rehash

#safe-updates

[isamchk]

key_buffer=64M

sort_buffer=64M

read_buffer=16M

write_buffer=16M

[myisamchk]

key_buffer=64M

sort_buffer=64M

read_buffer=16M

write_buffer=16M

[mysqlhotcopy]

interactive-timeout

以上配置内容来自DirectAdmin官方帮助中心(http://help.directadmin.com/item.php?id=44),大家请根据自己的情况自行修改参数。

完成后保存,退出,重启MySQL。

/sbin/service mysqld restart

OK,做完以上的两个方面的优化后,相信您的MySQL在高负载下的表现会大大提高了。

香港/美国/国内高速VPS

声明: 博客仅为分享信息绝非推荐,网站不参与交易绝非中介,内容均仅代表个人观点绝非权威,读者请自行考虑后入手并自担风险!一分钱一分货仍是恒久不变之真理,未成年读者(包括生理和心理)请在监护人陪同下访问本站!本文由( 赵 容 )原创编译,转载请保留链接: DirectAdmin优化MySQL性能(升级TCMalloc及修改配置)鄙视无耻复制行为!
关于隐私: 赵容非全职打理博客,所有评论不保证审核时间进度,我有义务保证您的个人信息不经由赵容部落透露给任何第三方,随意或虚假邮箱评论会自动进入垃圾箱无法展示和给您回应.
关于安全: 任何IDC都有倒闭和跑路的可能,出口线路更不可控,月付和备份是您的最佳选择,请保持良好的、有规则的备份习惯.

DirectAdmin优化MySQL性能(升级TCMalloc及修改配置):目前有24 条留言

  1. 11楼
    patqian:

    ❓ 为什么我另外2台主机可以配置这个,另外一台配置不起来,从启MYSQL报错,我都以及配置了N次了,和另外2台一样,就是启动不起来
    #service mysqld restart
    Shutting down MySQL. SUCCESS!
    Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/cccc.cccc.pid).

    2014-10-01 16:38 [回复]
  2. 10楼
    軍師:

    1.4.5 版本的 DA /etc 下面怎么没 my.cnf 只有my.cnf.old 。。 貌似里面的配没什么用

    2014-06-12 13:14 [回复]
  3. 9楼
    bihui:

    h ttp://tiger.im/297.html

    参考这个搞定,我的是5.0,升级5.1后搞定

    2013-12-20 23:18 [回复]
    • 赵 容:

      每个人配置的环境、组件版本都可能有差异,教程是死的人是活的,必须根据自己的情况修正。

      2013-12-20 23:22 [回复]
  4. 8楼
    bihui:

    晕死了,我安装了好几次,都没有成功,centos 5.1

    [[email protected] gperftools-2.0]# lsof -n | grep tcmalloc
    [[email protected] gperftools-2.0]#

    conf文件我都检查过,对着呢,郁闷

    2013-12-20 18:10 [回复]
  5. 7楼
    bihui:

    echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf

    这一行是干嘛的呢?

    2013-12-20 14:19 [回复]
    • 赵 容:

      写入一行到文件中

      2013-12-20 17:44 [回复]
      • bihui:

        写完后那一行应该是 /usr/local/lib
        并且conf文件里没有引号吧

        2013-12-20 17:47 [回复]
  6. 6楼
    bihui:

    lsof -n | grep tcmalloc 这个执行完没有出现你说的那个东东

    [[email protected] gperftools-2.0]# lsof -n | grep tcmalloc
    [[email protected] gperftools-2.0]#

    2013-12-20 14:08 [回复]
    • 赵 容:

      这说明没有安装成功。

      2013-12-20 14:12 [回复]
  7. 5楼
    james:

    装了Tcmalloc,数据库都启动不了,还好有备份,真是虚惊一场。
    请问如何卸载Tcmalloc,我是菜鸟,谢谢

    2013-01-05 10:43 [回复]
    • 赵 容:

      编辑mysqld_safe把Tcmalloc去掉应该可以的。
      不过,这个我在不同的服务器上装了很多次,没有一次失败的,更别说不能启动数据库了。。。你这也太悲剧了啊

      2013-01-05 10:52 [回复]
      • james:

        你好,在第二步,我没有my.cnf这个文件,但有两个类似的文件my.cnf.old,my.cnf.rpmsave,请问我该修改哪个?谢谢

        2013-01-05 11:26 [回复]
        • 赵 容:

          可直接自行建立一个

          2013-01-05 11:43 [回复]
          • james:

            ERROR! The server quit without updating PID file. 重启数据库出错了,该怎么办啊,非常感谢

            2013-01-05 11:56 [回复]
            • 赵 容:

              修改my.cnf文件,配置文件错,或者清理日志,或者google相关的报错信息。

              2013-01-05 12:12 [回复]
              • james:

                已经解决,谢谢。数据库版本不同,参考/usr/share/mysql/my*.cnf 这些个文件,选一个自己服务器适合的,复制过去。

                2013-01-05 12:37 [回复]
                • 用你的方法成功了,折腾了好久,结果随便找一个复制过去就Ok了

                  2013-05-02 07:51 [回复]
  8. 4楼
    Yusky:

    服务器一般默认没有安装的吗?

    2012-07-08 03:28 [回复]
    • 赵 容:

      服务器默认一般安装了一个操作系统。

      2012-07-08 07:59 [回复]
  9. 地板
    zodiacg:

    MySQL5.5配置文件和5.1相比有些参数变了,比如skip-locking现在是skip-external-locking。而且它很坑爹的连自己自带的那个小内存配置文件里这些东西都没改……我上次直接用my-small.cnf结果直接启动不起来……最后自己加上skip-innodb就不管了

    如果担心评论耗资源可以考虑第三方的评论服务,比如Disgus和国内好像叫多说还是什么的来着。

    2012-07-02 08:31 [回复]
    • 赵 容:

      是的,本文所述为MySQL5.1的版本下的~

      2012-07-02 08:31 [回复]
  10. 板凳
    imnpc:

    😎 收藏 备用

    2012-07-01 17:45 [回复]
  11. 沙发
    野狼:

    谢谢这么好的文章,收下了。直接COPY

    2012-07-01 16:08 [回复]

发表评论


海星云主机

广而告之