服务器 频道

linux高负载下mysql数据库彻底优化

其他一些重要参数
  笔者设置:
  sort_buffer_size = 1M
  max_connections=120
  wait_timeout =120
  back_log=100
  read_buffer_size = 1M
  thread_cache=32
  interactive_timeout=120
  thread_concurrency = 4

  参数说明:
  back_log
  要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于你的操作系统的限制将是无效的。
  max_connections
  并发连接数目最大,120 超过这个值就会自动恢复,出了问题能自动解决
  
  thread_cache
  没找到具体说明,不过设置为32后 20天才创建了400多个线程 而以前一天就创建了上千个线程 所以还是有用的
  
  thread_concurrency
  #设置为你的cpu数目x2,例如,只有一个cpu,那么thread_concurrency=2
  #有2个cpu,那么thread_concurrency=4
  
  skip-innodb
  #去掉innodb支持

附my.cnf全部文件
  代码:

  # Example MySQL config file for medium systems.
  #
  # This is for a system with little memory (32M - 64M) where MySQL plays
  # an important part, or systems up to 128M where MySQL is used together with
  # other programs (such as a web server)
  #
  # You can copy this file to
  # /etc/my.cnf to set global options,
  # mysql-data-dir/my.cnf to set server-specific options (in this
  # installation this directory is /var/lib/mysql) or
  # ~/.my.cnf to set user-specific options.
  #
  # In this file, you can use all long options that a program supports.
  # If you want to know which options a program supports, run the program
  # with the "--help" option.

  # The following options will be passed to all MySQL clients
  [client]
  #password = your_password
  port = 3306
  socket = /tmp/mysql.sock
  #socket = /var/lib/mysql/mysql.sock
  # Here follows entries for some specific programs

  # The MySQL server
  [mysqld]
  port = 3306
  socket = /tmp/mysql.sock
  #socket = /var/lib/mysql/mysql.sock
  skip-locking
  key_buffer = 128M
  max_allowed_packet = 1M
  table_cache = 256
  sort_buffer_size = 1M
  net_buffer_length = 16K
  myisam_sort_buffer_size = 1M
  max_connections=120
  #addnew config
  wait_timeout =120
  back_log=100
  read_buffer_size = 1M
  thread_cache=32
  skip-innodb
  skip-bdb
  skip-name-resolve
  join_buffer_size=512k
  query_cache_size = 32M
  interactive_timeout=120
  long_query_time=10
  log_slow_queries= /usr/local/mysql4/logs/slow_query.log
  query_cache_type= 1
  # Try number of CPU''s*2 for thread_concurrency
  thread_concurrency = 4

  #end new config
  # Don''t listen on a TCP/IP port at all. This can be a security enhancement,
  # if all processes that need to connect to mysqld run on the same host.
  # All interaction with mysqld must be made via Unix sockets or named pipes.
  # Note that using this option without enabling named pipes on Windows
  # (via the "enable-named-pipe" option) will render mysqld useless!
  #
  #skip-networking

  # Replication Master Server (default)
  # binary logging is required for replication
  #log-bin

  # required unique id between 1 and 2^32 - 1
  # defaults to 1 if master-host is not set
  # but will not function as a master if omitted
  server-id = 1

  # Replication Slave (comment out master section to use this)
  #
  # To configure this host as a replication slave, you can choose between
  # two methods :
  #
  # 1) Use the CHANGE MASTER TO command (fully described in our manual) -
  # the syntax is:
  #
  # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
  # MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
  #
  # where you replace <host>, <user>, <password> by quoted strings and
  # <port> by the master''s port number (3306 by default).
  #
  # Example:
  #
  # CHANGE MASTER TO MASTER_HOST=''125.564.12.1'', MASTER_PORT=3306,
  # MASTER_USER=''joe'', MASTER_PASSWORD=''secret'';
  #
  # OR
  #
  # 2) Set the variables below. However, in case you choose this method, then
  # start replication for the first time (even unsuccessfully, for example
  # if you mistyped the password in master-password and the slave fails to
  # connect), the slave will create a master.info file, and any later
  # change in this file to the variables'' values below will be ignored and
  # overridden by the content of the master.info file, unless you shutdown
  # the slave server, delete master.info and restart the slaver server.
  # For that reason, you may want to leave the lines below untouched
  # (commented) and instead use CHANGE MASTER TO (see above)
  #
  # required unique id between 2 and 2^32 - 1
  # (and different from the master)
  # defaults to 2 if master-host is set
  # but will not function as a slave if omitted
  #server-id = 2
  #
  # The replication master for this slave - required
  #master-host = <hostname>
  #
  # The username the slave will use for authentication when connecting
  # to the master - required
  #master-user = <username>
  #
  # The password the slave will authenticate with when connecting to
  # the master - required
  #master-password = <password>
  #
  # The port the master is listening on.
  # optional - defaults to 3306
  #master-port = <port>
  #
  # binary logging - not required for slaves, but recommended
  #log-bin

  # Point the following paths to different dedicated disks
  #tmpdir = /tmp/
  #log-update = /path-to-dedicated-directory/hostname

  # Uncomment the following if you are using BDB tables
  #bdb_cache_size = 4M
  #bdb_max_lock = 10000

  # Uncomment the following if you are using InnoDB tables
  #innodb_data_home_dir = /var/lib/mysql/
  #innodb_data_file_path = ibdata1:10M:autoextend
  #innodb_log_group_home_dir = /var/lib/mysql/
  #innodb_log_arch_dir = /var/lib/mysql/
  # You can set .._buffer_pool_size up to 50 - 80 %
  # of RAM but beware of setting memory usage too high
  #innodb_buffer_pool_size = 16M
  #innodb_additional_mem_pool_size = 2M
  # Set .._log_file_size to 25 % of buffer pool size
  #innodb_log_file_size = 5M
  #innodb_log_buffer_size = 8M
  #innodb_flush_log_at_trx_commit = 1
  #innodb_lock_wait_timeout = 50

  [mysqldump]
  quick
  max_allowed_packet = 16M

  [mysql]
  no-auto-rehash
  # Remove the next comment character if you are not familiar with SQL
  #safe-updates

  [isamchk]
  key_buffer = 20M
  sort_buffer_size = 20M
  read_buffer = 2M
  write_buffer = 2M

  [myisamchk]
  key_buffer = 20M
  sort_buffer_size = 20M
  read_buffer = 2M
  write_buffer = 2M

  [mysqlhotcopy]
  interactive-timeout

0
相关文章