สอบถามผู้รู้เกี่ยวกับการ จูน my.cnf หน่อยคับ

นานๆทีจะขึ้นแบบนี้คับ
Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0

แล้วอาการก็จะหน่วงๆ แล้ว load average ก็จะขึ้นสูงประมาณ 100 แล้วก็จะลงมาต่ำเหมือนเดิม

เครือ่งเป็น dell r210 ram 16 GB

เรียนท่านเทพช่วยแจงหรือปรับ หรือ my.cnf ตัวที่ปรับมาแล้วหรืออะไรอย่างงี้ก็ได้คับ

อันนี้เป็น my.cnf ของผมคับ
#########################################################

The MySQL database server configuration file.

You can copy this to one of:

- “/etc/mysql/my.cnf” to set global options,

- “~/.my.cnf” to set user-specific options.

One can use all long options that the program supports.

Run program with --help to get a list of available options and with

–print-defaults to see which it would actually understand and use.

For explanations see

http://dev.mysql.com/doc/mysql/en/server-system-variables.html

This will be passed to all mysql clients

It has been reported that passwords should be enclosed with ticks/quotes

escpecially if they contain “#” chars…

Remember to edit /etc/mysql/debian.cnf when changing the socket location.

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

Here is entries for some specific programs

The following values assume you have at least 32M ram

This was formally known as [safe_mysqld]. Both versions are currently parsed.

#[mysqld_safe]
#socket = /var/run/mysqld/mysqld.sock
#nice = 0

[mysqld]

* Basic Settings

* IMPORTANT

If you make changes to these settings and your system uses apparmor, you may

also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.

user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
skip-name-resolve

Instead of skip-networking the default is now to listen only on

localhost which is more compatible and is not less secure.

#bind-address = 127.0.0.1
#bind-address = 192.168.250.2
bind-address = 0.0.0.0
#bind-address = localhost
#–skip-networking

* Fine Tuning

key_buffer = 8048M
max_allowed_packet = 256M
thread_stack = 128K
thread_cache_size = 256

myisam-recover = BACKUP
query_cache_limit = 256M
query_cache_size = 128M
#log_error = /var/log/mysql/error.log

Here you can see queries with especially long duration

#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time =
log-queries-not-using-indexes
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 1
max_binlog_size = 64M
max_connections = 150000
max_connect_errors = 10000
max_allowed_packet = 64M
table_cache = 500000
sort_buffer_size = 3024M
read_buffer_size = 256M
read_rnd_buffer_size = 3524M
myisam_sort_buffer_size = 3524M
thread_cache = 92
thread_concurrency = 256
default-character-set=utf8

max_tmp_tables = 400
tmp_table_size= 3024M

concurrent_insert=4
low_priority_updates=1

#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name

* InnoDB

InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.

Read the manual for more InnoDB related options. There are many!

* Security Features

Read the manual, too, if you want chroot!

chroot = /var/lib/mysql/

For generating SSL certificates I recommend the OpenSSL GUI “tinyca”.

ssl-ca=/etc/mysql/cacert.pem

ssl-cert=/etc/mysql/server-cert.pem

ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 128M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

#[isamchk]
#key_buffer = 512M
#sort_buffer_size = 256M
#read_buffer = 556M
#write_buffer = 556M

#[myisamchk]
#key_buffer = 512M
#sort_buffer_size = 1024M
#read_buffer = 1024M
#write_buffer = 128M

* IMPORTANT: Additional settings that can override those from this file!

The files must end with ‘.cnf’, otherwise they’ll be ignored.

!includedir /etc/mysql/conf.d/

#########################################################

ใส่อะไรเวอร์เกินขนาดนี้ครับ

max_connections = 150000
max_connect_errors = 10000
max_allowed_packet = 64M
table_cache = 500000
sort_buffer_size = 3024M
read_buffer_size = 256M
read_rnd_buffer_size = 3524M
myisam_sort_buffer_size = 3524M
thread_cache = 92
thread_concurrency = 256

แล้วมันต้องใส่ยังไงคับผมก็ปรับมั่วๆ อ่ะคับอ่านนู่นอ่านนี่

ลองไม่ใส่ดูก่อนดิครับ อาจจะดีกว่าก็ได้ แล้ว ส่วนไหน อืด ค่อยเพิ่มเอา

ผมไม่รู้ว่าค่าเริ่มต้นมันคืออะไรอ่ะคับ ปรับจนมั่วหมดแล้วคับ

https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl

key_buffer = 2048M

max_connections = 500

table_cache = 8192

sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M

tmp_table_size= 512M

ปรับเหลือแค่นี้พอครับ

ตามที่คุณตั้ง เครื่อง database คุณต้องมีแรมประมาณหลักหลายร้อย TB โน่นแหละครับถึงจะใช้งานได้ - -’

ถ้าเครื่องแรม 8GB หละฮ่ะ

ขอบคุณครับ

share hosting แรมไม่เกิน 8GB

[mysqld]local-infile=0

#skip-innodb
innodb_buffer_pool_size=256M
#innodb_additional_mem_pool_size=4M
innodb_log_buffer_size=2M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency=2
#innodb_log_file_size = 256M
innodb_file_per_table

[COLOR=#000000][FONT=Tahoma]skip-character-set-client-handshake
skip-name-resolve
max_connections = 300
key_buffer = 512M
myisam_sort_buffer_size = 32M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
read_rnd_buffer_size = 1M

table_cache = 1536
thread_cache = 4
thread_concurrency = 2
thread_cache_size = 256
wait_timeout = 3600
connect_timeout = 10
max_tmp_tables = 256
tmp_table_size = 128M
max_allowed_packet = 16M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1
query_prealloc_size = 16384
query_alloc_block_size = 16384
max_heap_table_size = 128M
#tmpdir=/var/mysqltmp

log_warnings=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open_files_limit = 16384
[/FONT][/COLOR]

ถ้าเครื่องเดี่ยว RAM 16GB หล่ะครับ

ตามกระทู็ ก็ Ram 16GB นะครับ ลองไล่อ่าน comment ดูครับ

อ๋อโทษทีครับ พอดีผมไปอ่านตรง RAM 8GB หน่ะครับ

แรม 16GB ผมยังใช้ค่าพวกนี้อยู่เลย (ฮา) ปรับขึ้นแค่ inno buffer pool กับ key buffer อะครับ

ถ้า share host ใส่ max_user_connections ไว้ด้วยก็ดี เวลาตายให้มันตายเป็นเว็บๆไป ไม่ลากจนเต็มทั้งเครื่อง
max_user_connections=100

มาซุ่มเก็บข้อมูลครับ ^-^