การปรับ 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 ลงก็จะลดลงแล้วครับ แต่ก็มีผลกับประสิทธิภาพด้วย
lipky
March 6, 2011, 8:28am
4
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เว็บก็เริ่มช้าแล้ว