ฉันเพิ่งมีปัญหากับ 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 แต่พวกเขาดูเหมือนมุ่งไปที่คนที่รู้อยู่แล้วว่าพวกเขากำลังทำอะไร! ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ขอบคุณ!