Score:1

แคช MariaDB ค้างคืน

ธง cn

เรากำลังใช้งาน LAMP stack ซึ่งรวมถึง MariaDB 10.5.15 บน Centos 7 ซึ่งเป็นเซิร์ฟเวอร์เฉพาะที่มี CPU 4 ตัวและ RAM 8GB

ไม่เคยมีปัญหาเลยจนกระทั่งสองสามสัปดาห์ที่ผ่านมา ซึ่งฉันสังเกตเห็นว่าข้อความค้นหาช้าโดยใช้เวลา 8-9 วินาทีในบันทึกข้อความค้นหาที่ช้า

ข้อความค้นหาเหล่านี้ขัดแย้งกับฐานข้อมูล INNODB หลายฐานข้อมูล แต่มักจะเป็นตารางขนาดใหญ่ (เช่น 10,000+ แถว) มักเกิดขึ้นระหว่างเวลา 6.00 น. ถึง 8.00 น.

ตารางที่มีปัญหามีดัชนี และคำสั่งเดียวกันจะดำเนินการในเวลาน้อยกว่าหนึ่งวินาที

ฉันพบว่าการเข้าสู่ระบบเซิร์ฟเวอร์เวลา 8.00 น. ของวันอาทิตย์และสอบถามตารางขนาดใหญ่เหล่านี้ด้วยคำสั่ง Select อย่างง่าย พวกเขาจะใช้เวลา 8-9 วินาทีในการดำเนินการ จากนั้น ในช่วงเวลาที่เหลือของวัน แม้จะเลยเที่ยงคืนไปแล้วก็ตาม คำถามใดๆ เกี่ยวกับโต๊ะนั้นก็จะดำเนินไปอย่างรวดเร็ว

06.00 - 08.00 น. จะเป็นช่วงเวลาที่สิ่งต่างๆ "ฟื้นคืนชีพ" หลังจากไม่ได้ใช้งานในช่วงหัวค่ำ

ดูเหมือนว่ามีแคชบางประเภทที่กำลังเย็นและจำเป็นต้องอุ่นเครื่อง แต่ฉันไม่แน่ใจว่าทำไมสิ่งนี้จึงเริ่มเกิดขึ้นทันทีหลังจากใช้งานโดยปราศจากปัญหาหลายปี ไม่มีกระบวนการขนาดใหญ่ที่ทำงานบนเซิร์ฟเวอร์ในชั่วข้ามคืนที่ฉันรู้ และเซิร์ฟเวอร์ไม่ได้อยู่ภายใต้การโหลดเมื่อสิ่งนี้เกิดขึ้น

เราตรวจสอบโหลดของ CPU ทุกวันตลอด 24 ชั่วโมง และตรวจสอบจำนวนการเชื่อมต่อกับ Apache และ MariaDB เป็นระยะ ซึ่งยังคงอยู่ในระดับต่ำตลอดทั้งวัน โดยทั่วไปจะมีหน่วยความจำว่างประมาณ 3GB ไม่รวมบัฟเฟอร์และแคช

แก้ไข

น่าอายที่ฉันค้นพบว่าการสืบค้นช้าที่เป็นปัญหานั้นไม่ได้ใช้ดัชนีและกำลังทำการสแกนตารางทั้งหมด การสอบถามเริ่มต้นอาจใช้เวลาหลายวินาที จากนั้นในช่วงที่เหลือของวัน แม้แต่การสแกนตารางแบบเต็มก็ใช้เวลาน้อยกว่าหนึ่งวินาที ฉันคิดว่านี่เป็นดิสก์แคชบางประเภทที่จะเย็นในชั่วข้ามคืน

แม้ว่าอาจดูเหมือนไม่ใช่เรื่องผิดปกติที่การสแกนตารางแบบเต็มจะมีปัญหาด้านประสิทธิภาพ แต่ก็ยังดูแปลกที่สิ่งนี้กลายเป็นปัญหาในทันที

Score:0
ธง ua

ดูเหมือนว่าคุณได้ขจัดการทิ้งขยะทุกคืนและกระบวนการที่ช้าออกไปแล้วใช่ไหม

คำแนะนำในการดีบักเพิ่มเติม:

ลดการตั้งค่าส่วนกลางของ long_query_time และเปิดสโลว์ล็อกไว้ คุณอาจจับคนร้ายได้

แบบสอบถามของคุณทำงานบ่อยแค่ไหน? สิ่งที่ฉันกำลังทำอยู่นี้คือการจำกัดเวลาที่สิ่งต่างๆ ช้าลง

ตรวจสอบ แสดงสถานะทั่วโลกเช่น "สถานะการออนไลน์" หากมีค่าน้อยกว่า 86400 แสดงว่า MariaDB ได้รีสตาร์ทน้อยกว่า 24 ชั่วโมงที่ผ่านมา ในกรณีนี้ คุณควรจะสามารถตรึงเวลาเกือบเป็นวินาทีได้ (แต่ไม่ระบุสาเหตุ).

แสดงคำถามให้เราทราบ บวก แสดงการสร้างตาราง และ อธิบาย... เราอาจช่วยคุณเร่งความเร็วได้ (เช่น ด้วยดัชนีที่ดีกว่าหรือการปรับโครงสร้างข้อความค้นหาใหม่) ซึ่งจะช่วยขจัดปัญหา (แม้ว่าจะไม่ต้องแก้สาเหตุก็ตาม)

MrCarrot avatar
cn flag
`เวลาทำงาน' เป็นเวลาหลายวันแล้ว (เนื่องจากเรารีสตาร์ทด้วยตนเองครั้งล่าสุด) ฉันไม่คิดว่าการตรวจสอบสคีมาตารางจะช่วยได้เพราะสิ่งนี้มีผลกับหลายตารางในหลายฐานข้อมูล (ขนาดใหญ่ทั้งหมด แต่ทั้งหมดใช้ดัชนีที่เหมาะสม) เมื่อวานฉันวิ่งเจอโจรที่โทรมาสอบถามทุก ๆ 15 นาที โดยหวังว่าจะระบุเวลาที่เกิดข้อผิดพลาด (ฉันสงสัยว่า 6 โมงเช้า แต่อาจเร็วกว่านั้น) เช้านี้ไม่มีบันทึกข้อความค้นหาช้า อาจเป็นได้ว่างาน cron ทำให้ฐานข้อมูลอุ่นขึ้น หรืออาจเป็นเรื่องบังเอิญ ฉันจะปล่อยไว้ 2-3 วันแล้วลดการตั้งค่า `long_query_time`
MrCarrot avatar
cn flag
น่าอายที่ฉันค้นพบว่าการสืบค้นช้าที่เป็นปัญหานั้นไม่ได้ใช้ดัชนีและกำลังทำการสแกนตารางทั้งหมด การสอบถามเริ่มต้นอาจใช้เวลาหลายวินาที จากนั้นในช่วงที่เหลือของวัน แม้แต่การสแกนตารางแบบเต็มก็ใช้เวลาน้อยกว่าหนึ่งวินาที ฉันคิดว่านี่เป็นดิสก์แคชบางประเภทที่จะเย็นในชั่วข้ามคืน แม้ว่าอาจดูเหมือนไม่ใช่เรื่องผิดปกติที่การสแกนตารางแบบเต็มจะมีปัญหาด้านประสิทธิภาพ แต่ก็ยังดูแปลกที่สิ่งนี้กลายเป็นปัญหาในทันที
ua flag
@MrCarrot - การแคชดิสก์... คุณมีฮาร์ดแวร์ควบคุม RAID หรือไม่ คุณกำลังทำงานอยู่ในคลาวด์หรือไม่? หาก "ไม่" สำหรับทั้งคู่ ฉันจะไม่คาดหวังให้ "ดิสก์แคช" เป็นคำตอบ InnoDB ใช้ "buffer_pool" ใน RAM
MrCarrot avatar
cn flag
ดิสก์เป็นไดรฟ์ SSD ที่มี RAID1 (เป็นเซิร์ฟเวอร์เฉพาะ) ฉันกังวลว่าไดรฟ์อาจล้มเหลวหรืออาร์เรย์ RAID อยู่ภายใต้การโหลด แต่บริษัทโฮสติ้งอ้างว่าไม่เป็นไร ฉันเดาว่าอาจเป็นบัฟเฟอร์พูลที่เย็นลง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา