Câu hỏi
Có cách nào để cải thiện hiệu suất hoạt động của siêu dữ liệu giữa vùng chứa dựa trên Linux chạy trong Dịch vụ ứng dụng Azure và ổ đĩa được gắn được lưu trữ trong Tệp Azure không?
Bối cảnh
Gần đây tôi đã di chuyển một giải pháp có mọi thứ trên một máy chủ sang giải pháp dựa trên Azure trong đó:
- Mã chạy trên vùng chứa được lưu trữ trong Dịch vụ ứng dụng Azure.
- Những tệp là một phần của dữ liệu kinh doanh nằm trên Tệp Azure (tức là chia sẻ trong Tài khoản lưu trữ Azure)/được gắn trên vùng chứa (thông qua dịch vụ ứng dụng của
Cài đặt
> Cấu hình
> Ánh xạ đường dẫn
tiết diện).
Điều này đã gây ra một số vấn đề về hiệu suất với các thao tác tìm kiếm trong một thư mục để xem liệu một số tệp nhất định có tồn tại hay không. Điều đó hiện được thực hiện thông qua PHP chức năng tồn tại tập tin.
Khi thử nghiệm trên thiết bị cục bộ của mình, tôi có thể cải thiện hiệu suất bằng cách nối thêm :được lưu trong bộ nhớ cache
đến tham số liên kết; ví dụ. --mount type=bind,source=d:\my\host\path,target=/var/my/container/path:cached
; nhưng tôi không thể tìm thấy tùy chọn để thực hiện bất kỳ điều gì tương tự trong Dịch vụ ứng dụng Azure.
Bộ chứa của tôi đang chạy Linux (Ubuntu:21:10
); và tôi đã đọc rằng các hoạt động siêu dữ liệu SMB (bao gồm cả việc kiểm tra xem tệp có tồn tại hay không) có chi phí hoạt động trong Linux cao hơn so với Windows; vì vậy có lẽ điều đó có liên quan (tức là Tệp Azure sử dụng SMB); mặc dù tôi không chắc chắn (vì đường dẫn được gắn vào vùng chứa, vì vậy hệ điều hành vùng chứa có thể không biết về việc triển khai cơ bản).
tôi đã kích hoạt chia sẻ tập tin lớn
để tăng IOP có sẵn cho tệp chia sẻ; nhưng nó không tạo ra sự khác biệt nào (do đây là siêu dữ liệu chứ không phải là vấn đề về hiệu suất IO, có ý nghĩa).
Hiện tại, tôi đang nghĩ giải pháp sẽ là cập nhật mã để giữ cấu trúc tệp đại diện trong cơ sở dữ liệu của ứng dụng để chúng tôi có thể truy vấn mã đó để nhận được thông tin tương tự nhanh hơn; nhưng điều này có nhược điểm là mọi thao tác tải lên hoặc xóa một tệp cũng cần phải cập nhật cơ sở dữ liệu để giữ cho thông tin về đĩa và db được đồng bộ hóa/sao chép nơi lưu giữ thông tin; vì vậy tôi muốn giải quyết vấn đề cơ sở hạ tầng này hơn là mã hóa lại nếu có thể.