พอดีไปอ่านบทความ ของท่าน 212cafe.com เรื่อง มีวิธีจูน apache แบบรีดพลังแบบสุด ๆ ของมันคู่กันครับพี่ๆมีวิธีจูน mysql ให้รองรับ การทำงานอันหนักหน่วงได้อย่างไรครับ lol
แยกเครื่องแล้วเสียบสาย cross gigabit ครับ ดีที่สุด (ประสบการณ์ตรง)
ส่วนถ้าเครื่องเดียวกัน ก็ต้องลองแบ่งทรัพยากรให้ดีๆ ว่า apache มันเอาไปเท่าไหร่
แล้วเหลือให้ mysql เท่าไหร่
จากนั้นก็ลุย config my.cnf ครับ
ตัวอย่างด้านล่างคือกรณีแยกเครื่อง และมี ram ให้ mysql 2gb
ตารางมีไม่มาก (แค่ 70 ตาราง) เพราะใช้แค่ฐานข้อมูลเดียว รันอยู่เว็บเดียว
[mysqld]
port = 3306
skip-locking
log-slow-queries
max_allowed_packet = 1M
key_buffer = 1024M
sort_buffer_size = 16M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_heap_table_size = 128M
thread_cache = 96
table_cache = 2048
#query caching configuration
query_cache_type = 1
query_cache_size = 32M
query_cache_limit = 32M
query_prealloc_size = 16384
Try number of CPU’s*2 for thread_concurrency
thread_concurrency = 4
skip-name-resolve
max_connections = 500
long-query-time = 2
skip-bdb
skip-innodb
wait_timeout = 30
connect_timeout = 10
tmp_table_size = 96M
max_tmp_table = 384
server-id = 1
Uncomment the following if you are using BDB tables
#bdb_cache_size = 384M
#bdb_max_lock = 100000
Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/var/
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
#innodb_log_group_home_dir = /usr/local/var/
#innodb_log_arch_dir = /usr/local/var/
You can set …_buffer_pool_size up to 50 - 80 %
of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 384M
#innodb_additional_mem_pool_size = 20M
Set …_log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#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 = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
ถ้าเซิฟเวอร์มีแรมเยอะๆ ก็ใช้ตามนี้เลยก็ได้ครับ
ถ้าน้อยก็คงต้องลด buffer ด้านบนๆ ลงหน่อย (ตัวแดง)
กรณีมีหลายฐานข้อมูล หรือใช้กันหลายเว็บก็ต้องปรับตัวเขียว (เพิ่ม/ลด) เป็นกรณีๆ ไปครับ
อ้อ tmp_table_size ปกติเค้าไม่ใช้กันขนาด 96M หรอกครับ แค่ 32M ก็อยู่แล้ว
แต่พอดีเครื่องนี้มันกรณีพิเศษ
เรื่องนี้น่าย้ายไปอยู่ How To นะครับ
ขอบคุณครับจะลองเอาไปเทสดู
พอดีกำลัง วิธี จูน MYSQL เลยครับเห็นพี่ต้น 212cafe เขียน วิธีจูน apache ไว้
พี่ๆ ท่านใด พอมีวิธีการปรับแต่งระบบ มาช่วยแนะนำรบกวนด้วยครับ
พอดีต่อยอดการค้นหาผมไปเจอ ทริก เล็กๆ น้อยๆ มา
ปรับแต่ง/etc/my.cnf ให้MySQL
วันนี้ขอกระโดดข้ามมาเรื่องที่ลืมง่าย ๆ ก่อนครับ บังเอิญผมได้เรื่องดี ๆ จาก mysql และอีกเวป จำไม่ได้แล้ว รู้สึกจะเป็นของคุณ Jeremy ซึ่งเป็นคนคุม MySQL ของ Yahoo ทั้งหมด เขามีคำแนะนำในการปรับแต่ง MySQL ซึ่งผมลองเอามาใช้แล้วพบว่าเจ๋งจริง
1.กรณี memory ไม่จำกัด ต้องการเร็วสุด
key_buffer = 64 M
table_cache = 256
sort_buffer = 4 M
read_buffer_size = 1 M
2.กรณี memory น้อย ตารางน้อย แต่ต้องการความเร็ว (เรื่องมากจริง ๆ อิ อิ)
key_buffer = 16 M
sort_buffer = 1 M
3.Memory น้อย ตารางมาก หรือคนมาใช้บริการมาก ๆ กลัวmemory ไม่พอ กรณีนี้เร็วมากไม่ได้
key_buffer = 512 k
sort_buffer = 100 K
read_buffer_size = 100 k
ในกรณีที่มีการ group by หรือ order by มากกว่า memory บ่อย ๆ ใช้ record_rnd_buffer
ปัญหาคอขวดของ MySQL ที่สำคัญคือ CPU power รองลงมาคือ memory แต่ปัญหาคอขวดของ PHP อยู่ตรงแค่ memory เท่านั้น ถ้ามี memory ไม่จำกัด รันสุด ๆ MySQL จะ crash ก่อน แต่ถ้าเพิ่ม CPU อีกตัว จะลดโหลดไปได้อย่างมาก
จาก http://nuke.thaihealth.net/article88.html
http://nuke.thaihealth.net/topics.html
เพิ่งอ่านมัวก๊อป มา ดูไม่มีอะไรเลยแหะ
ไว้ ว่างๆ แล้วลองจูน แล้วดี จะมาเขียน ไว้ครับ ช่วงนี้ จะสอบ -*- แย่จัง