ฉันเพิ่งมีปัญหากับ thrashing เนื่องจากหน่วยความจำไม่เพียงพอ (VPS ของฉันมีทั้งหมด 256M)
ฉันพยายามปรับแต่ง MySQL โดยใช้ mysqltuner.pl และรับผลลัพธ์ต่อไปนี้:
-------- สถิติทั่วไป ---------------------------------------- ---------- [-] ข้ามการตรวจสอบเวอร์ชั่นสำหรับสคริปต์ MySQLTuner [ตกลง] ปัจจุบันรองรับ MySQL เวอร์ชั่น 5.0.51a-3ubuntu5.4-log [ตกลง] ปฏิบัติการบนสถาปัตยกรรม 64 บิต -------- สถิติของเครื่องมือการจัดเก็บ --------------------------------------- ---- [-] สถานะ: + เก็บถาวร -BDB -Federated -InnoDB -ISAM -NDBCluster [-] ข้อมูลในตาราง MyISAM: 114M (ตาราง: 454) [!!] ตารางแยกส่วนทั้งหมด: 34 -------- การวัดประสิทธิภาพ ---------------------------------------- --------- [-] สูงสุดสำหรับ: 40 วินาที (570 q [14.250 qps], 23 conn, TX: 154K, RX: 23K) [-] อ่าน / เขียน: 100% / 0% [-] บัฟเฟอร์ทั้งหมด: 338.0M ทั่วโลก + 2.7M ต่อเธรด (20 เธรดสูงสุด) [!!] การใช้หน่วยความจำที่เป็นไปได้สูงสุด: 392.9M (153% ของ RAM ที่ติดตั้ง) [ตกลง] ข้อความค้นหาช้า: 0% (5/570) [ตกลง] การใช้งานการเชื่อมต่อที่ใช้ได้สูงสุด: 15% (3/20) [!!] ขนาดบัฟเฟอร์หลัก / ดัชนี MyISAM ทั้งหมด: 8.0M / 9.4M [!!] อัตราการโจมตีของบัฟเฟอร์คีย์: 57.1% (7 แคช / 3 ครั้งอ่าน) [ตกลง] ประสิทธิภาพการค้นหาแคช: 21.9% (เลือก 7 แคช / 32 ตัว) [OK] Query cache Query ต่อวัน: 0 [ตกลง] การเรียงลำดับที่ต้องการตารางชั่วคราว: 0% (0 การเรียงลำดับชั่วคราว / 1 การเรียงลำดับ) [ตกลง] ตารางชั่วคราวที่สร้างบนดิสก์: 0% (0 บนดิสก์ / 32 ทั้งหมด) [ตกลง] อัตราการเข้าถึงแคชของเธรด: 86% (สร้าง 3 ครั้ง / 23 ครั้ง) [ตกลง] อัตราการเข้าชมแคชตาราง: 26% (เปิด 128 ครั้ง / เปิด 484) [ตกลง] เปิดขีด จำกัด ไฟล์ที่ใช้: 25% (259 / 1K) [ตกลง] ล็อคตารางที่ได้รับทันที: 100% (492 ทันที / 492 ล็อค) -------- ข้อเสนอแนะ ----------------------------------------- ------------ คำแนะนำทั่วไป: เรียกใช้ OPTIMIZE TABLE เพื่อจัดเรียงตารางเพื่อประสิทธิภาพที่ดีขึ้น MySQL เริ่มต้นภายใน 24 ชั่วโมงที่ผ่านมา - คำแนะนำอาจไม่ถูกต้อง ลดขนาดหน่วยความจำ MySQL โดยรวมของคุณเพื่อความเสถียรของระบบ ตัวแปรที่จะปรับ: *** การใช้งานหน่วยความจำสูงสุดของ MySQL สูงอย่างเป็นอันตราย *** *** เพิ่ม RAM ก่อนเพิ่มตัวแปรบัฟเฟอร์ MySQL key_buffer_size (> 9.4M)
แต่ฉันสับสนเล็กน้อยเกี่ยวกับวิธีลดการใช้หน่วยความจำสูงสุด ดูเหมือนว่าจะขึ้นอยู่กับ key_buffer และ max_connections แต่ต้องมีสิ่งอื่นที่เกี่ยวข้องด้วยหรือไม่
my.cnf:
key_buffer = 8M max_allowed_packet = 12M thread_stack = 128K thread_cache_size = 8 max_connections = 20 table_cache = 128 tmp_table_size = 256M max_heap_table_size = 256M join_buffer_size = 256K query_cache_limit = 8M query_cache_size = 64M
ฉันพยายามอ่านบทความการปรับแต่ง MySQL แต่พวกเขาดูเหมือนมุ่งไปที่คนที่รู้อยู่แล้วว่าพวกเขากำลังทำอะไร! ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ขอบคุณ!