Tìm hiểu Disk IOPS: Hiệu năng lưu trữ và cách tối ưu cho website

Disk IOPS (Input/Output Operations Per Second) là chỉ số đo lường số lượng thao tác đọc/ghi mà hệ thống lưu trữ xử lý trong một giây. Hiểu đúng IOPS giúp bạn chọn VPS/server phù hợp, tối ưu cơ sở dữ liệu, và tránh nghẽn hiệu năng khi traffic tăng cao. Bài viết này giải thích IOPS, cách đo, ngưỡng tốt cho các workload phổ biến, và checklist tối ưu thực chiến.

Tìm hiểu Disk IOPS: Hiệu năng lưu trữ và cách tối ưu cho website

Disk IOPS là gì và khác gì với MB/s

IOPS phản ánh tốc độ xử lý các yêu cầu truy cập ngẫu nhiên, còn MB/s đo thông lượng dữ liệu theo băng thông tuần tự. Với website và database, truy cập thường mang tính ngẫu nhiên, nên IOPS quan trọng hơn MB/s. Với streaming hoặc backup file lớn, MB/s lại có ý nghĩa hơn.

Tham số kỹ thuật ảnh hưởng đến IOPS

  • Loại lưu trữ: HDD thường 100–200 IOPS, SSD SATA 5.000–10.000 IOPS, NVMe có thể vượt 100.000 IOPS.
  • Kích thước block: block nhỏ tăng IOPS nhưng giảm MB/s; block lớn thì ngược lại.
  • Độ sâu hàng đợi (queue depth): hàng đợi sâu hơn tăng khả năng song song.
  • Độ trễ (latency): độ trễ thấp giúp tận dụng IOPS tốt hơn.
  • Giới hạn của nhà cung cấp: nhiều VPS đặt cap, ví dụ 60k đọc / 20k ghi IOPS.

IOPS bao nhiêu là đủ cho web/app

  • Website WordPress/Laravel nhỏ và API thông thường: 1.000–5.000 IOPS đã thoải mái.
  • Site thương mại điện tử vừa, database nhiều chỉ mục: 5.000–20.000 IOPS.
  • Hệ thống đọc nặng (cache miss nhiều, nhiều truy vấn nhỏ): 20.000–60.000 IOPS.
  • Ghi nặng (logging, analytics, Elasticsearch): ưu tiên write IOPS từ 20.000 trở lên.

Bảng so sánh IOPS vs MB/s theo workload

Workload Ưu tiên IOPS khuyến nghị MB/s khuyến nghị
CMS/Website động IOPS 5.000–20.000 50–200
Database OLTP IOPS 20.000–60.000+ 100–400
Streaming/Backup MB/s 1.000–5.000 300–1.000+
Elasticsearch/Logging Write IOPS 20.000–80.000+ 200–600

Cách tự đo IOPS trên Linux

Dùng fio để test đọc/ghi ngẫu nhiên 4k, queue depth 32, thời gian 60 giây. Chạy ở mount chứa dữ liệu của bạn.

fio --name=randread --rw=randread --bs=4k --iodepth=32 --numjobs=1 \
    --filename=/path/to/testfile --size=2G --time_based --runtime=60 --group_reporting

fio --name=randwrite --rw=randwrite --bs=4k --iodepth=32 --numjobs=1 \
    --filename=/path/to/testfile --size=2G --time_based --runtime=60 --group_reporting

Kết quả cần chú ý: IOPS, latency trung bình, và 99th percentile.

Đọc IOPS 60k và Ghi IOPS 20k có ý nghĩa gì

  • Đọc 60.000 IOPS: phù hợp web đọc nhiều, cache-miss thỉnh thoảng.
  • Ghi 20.000 IOPS: đủ cho phần lớn website, nhưng có thể là nút cổ chai với hệ thống ghi log lớn hoặc batch insert liên tục.
  • Tối ưu ứng dụng để chuyển tải từ ghi ngẫu nhiên sang ghi tuần tự khi có thể.

Tối ưu IOPS cho WordPress và ứng dụng PHP

  • Bật full-page cache ở edge (CDN) hoặc reverse proxy, giảm hit vào PHP/MySQL.
  • Dùng object cache (Redis) cho query lặp lại, giảm I/O đĩa.
  • Tối ưu MySQL: chỉ mục chuẩn, tránh query N+1, bật InnoDB buffer pool đủ lớn.
  • Dùng logging ở mức cảnh báo, xoay vòng log, nén log theo lô.
  • Đặt media trên object storage + CDN để giảm I/O local.

Chiến lược đĩa và hệ thống tệp

  • Ưu tiên NVMe và đảm bảo controller không bị chia sẻ quá mức.
  • Chọn kích thước block hợp lý: 4k cho truy cập ngẫu nhiên, lớn hơn cho tuần tự.
  • fs trim định kỳ với SSD/NVMe để duy trì hiệu năng.
  • RAID 10 cho cân bằng hiệu năng và an toàn dữ liệu; RAID 5/6 có penalty ghi.

Khi nào nên nâng cấp gói IOPS

  • Độ trễ truy vấn tăng cao vào giờ cao điểm dù CPU và RAM còn rảnh.
  • Tỷ lệ cache hit tốt nhưng TTFB vẫn cao do disk wait time.
  • Thông lượng ghi bị nghẽn khi ingest log hoặc index dữ liệu.

Checklist chẩn đoán nghẽn I/O

  • Kiểm tra iostat, pidstat, atop để xem %util và await của thiết bị lưu trữ.
  • So sánh kết quả fio với cam kết nhà cung cấp để phát hiện cap.
  • Đo 99th percentile latency ở tầng ứng dụng, so với latency I/O.
  • Tăng cache ở app và DB trước khi nâng cấp phần cứng.

Kết luận

IOPS là thước đo cốt lõi cho hiệu năng lưu trữ của web và database. Hãy chọn VPS có IOPS phù hợp workload, đo đạc bằng fio, theo dõi latency thực tế, và tối ưu theo nguyên tắc: giảm truy cập ngẫu nhiên, tăng cache, và đẩy tĩnh sang CDN. Với cấu hình như 60k đọc và 20k ghi IOPS, đa số website và API sẽ hoạt động mượt nếu cache và cơ sở dữ liệu được cấu hình đúng.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...