Trong tài liệu cho các access_log
chỉ thị , tài liệu nginx nói
Kích thước bộ đệm không được vượt quá kích thước ghi nguyên tử vào tệp đĩa.
Làm cách nào để xác định kích thước này trên hệ thống của tôi?
Trong tài liệu cho các access_log
chỉ thị , tài liệu nginx nói
Kích thước bộ đệm không được vượt quá kích thước ghi nguyên tử vào tệp đĩa.
Làm cách nào để xác định kích thước này trên hệ thống của tôi?
Câu trả lời:
muộn còn hơn không :)
câu trả lời nhanh là: "2.147.479.552 byte, nếu phiên bản kernel là 3.14 hoặc mới hơn"
câu trả lời chi tiết:
Theo như tôi hiểu, đó là về việc viết tòa nhà:
http://man7.org/linux/man-pages/man2/write.2.html
1) mọi hệ thống POSIX (linux, bsd, tất cả unix) đều được đảm bảo có thể ghi tối đa MAX_SSIZE byte
Theo POSIX.1, nếu số lượng lớn hơn SSIZE_MAX, kết quả được xác định theo triển khai; xem GHI CHÚ cho giới hạn trên của Linux.
# getconf SSIZE_MAX
32767
2) linux đảm bảo có thể ghi tới 1.99 GiB (và đó là hoạt động nguyên tử cho phiên bản kernel linux 3.14 trở lên)
Trên Linux, write () (và các lệnh gọi hệ thống tương tự) sẽ chuyển tối đa 0x7ffff000 (2.147.479.552) byte, trả về số byte thực sự được chuyển. (Điều này đúng trên cả hệ thống 32 bit và 64 bit.)
Nhưng đó là hoạt động nguyên tử công bằng chỉ từ kernel linux 3.14
Theo POSIX.1-2008 / SUSv4 Phần XSI 2.9.7 ("Tương tác luồng với hoạt động tệp thông thường"):
Tất cả các chức năng sau đây sẽ là nguyên tử đối với nhau trong các hiệu ứng được chỉ định trong POSIX.1-2008 khi chúng hoạt động trên các tệp thông thường hoặc liên kết tượng trưng: ...
Trong số các API sau đó được liệt kê là write () và writev (2). Và trong số các hiệu ứng nên là nguyên tử trên các luồng (và quy trình) là các bản cập nhật của phần bù tập tin. Tuy nhiên, trên Linux trước phiên bản 3.14, đây không phải là trường hợp: nếu hai quy trình chia sẻ mô tả tệp mở (xem open (2)) thực hiện ghi () (hoặc writev (2)) cùng một lúc, thì I Các hoạt động / O không phải là nguyên tử đối với việc cập nhật phần bù tệp, với kết quả là các khối đầu ra dữ liệu của hai quy trình có thể (không chính xác) trùng nhau. Sự cố này đã được khắc phục trong Linux 3.14.
Câu trả lời Superuser này có một định nghĩa tốt về kích thước ghi nguyên tử là gì.
Điều này ít nhất là lớn bằng kích thước của lĩnh vực phần cứng, đó là kích thước đọc / ghi nguyên tử.