การปรับ my.cnf คือจะปรับยังไงให้เหมาะสมกับคุณภาพVPSที่เราใช้อะครับ

การปรับ my.cnf คือจะปรับยังไงให้เหมาะสมกับคุณภาพVPSที่เราใช้อะครับ

VPSที่ผมใช้ Ram 512 Burstable 1024

ผมได้ลองปรับตาม โพสที่4ผลออกมาว่า เร็วกว่าแต่ก่อนเยอะมากๆเลยครับ แต่้้เฉพาะ mysql ก็กินไป 532.19mb แล้วอะครับผมควรลดส่วนไหนให้กินแรมน้อยลงอะครับ หรือควรเพิ่มramอะครับแต่ถ้าเพิ่มramผมกลัวจะไม่ีมีปัญญาจ่ายค่าเช่าอะครับ

ผมลองปรับ

skip-name-resolve

#skip-networking

skip-bdb

max_connections = 500

key_buffer = 128M

myisam_sort_buffer_size = 16M

join_buffer_size = 512K

read_buffer_size = 1M

sort_buffer_size = 2M

table_cache = 1000

thread_cache = 8

thread_concurrency = 4

thread_cache_size = 256

wait_timeout = 600

connect_timeout = 10

max_tmp_tables = 256

tmp_table_size = 64M

max_allowed_packet = 1M

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 = 256M

ตอนนี้ลดเหลือ 273.55mb แต่มันรวมทั้งหมดก็ยังเกิน512อยู่

ปรับแต่ง/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 อีกตัว จะลดโหลดไปได้อย่างมาก

เอามาจากกระทู้เดิมใน THT ของคุณมีนและต้นฉบับมาจากลิงค์ด้านล่างนี้

http://nuke.thaihealth.net/topics.html

เบื้องต้นก็ลด cache และ buffer ลงก็จะลดลงแล้วครับ แต่ก็มีผลกับประสิทธิภาพด้วย

max_connections = 500 < อยากทราบว่านีคือจำกัดคนเข้าชมใช่ไหมครับ หรือ ยังไง

key_buffer = 16K

join_buffer_size = 512K

read_buffer_size = 128K

sort_buffer_size = 256K

แรมน้อย ไม่ต้องใส่ buffer เยอะๆหรอกครับ

เข้าใจแล้วครับ ขอบคุณมากครับ ถ้าจะลดได้ดีึคือต้องลดพวก buffer กับ cache

จะปรับอะไรต้องอ่านค่าที่ตั้งต่างๆ ถูกใช้งานอย่างไร ถ้าใน phpMyAdmin ก็ tab status ครับ

ไม่ใช่ครับ มันคือจำนวนที่อนุญาตสูงในการเชื่อมต่อใช้งานฐานข้อมูลในเวลาเดียวกัน

ตอนนี้ผมเซท

skip-name-resolve

#skip-networking

skip-bdb

max_connections = 300

key_buffer = 64M

myisam_sort_buffer_size = 16M

join_buffer_size = 512K

read_buffer_size = 1M

sort_buffer_size = 2M

table_cache = 512

thread_cache = 8

thread_concurrency = 4

thread_cache_size = 256

wait_timeout = 300

connect_timeout = 10

max_tmp_tables = 256

tmp_table_size = 32M

max_allowed_packet = 8M

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 = 256M

แบบนี้อะครับ

กินแรมรวมทั้งหมดตอนนี้อยู่ที่552468kอะครับ

จำนวนคนออนไลท์อยู่ที่ประมาณ30-40คนช่วง40เว็บก็เริ่มช้าแล้ว