Mực hoặc bộ nhớ HTTP khác với lưu trữ bộ nhớ cache SSD?


9

Tôi đang dự tính thiết lập bộ đệm mực (hoặc có thể là véc ni) trên hệ thống có ổ SSD.

Lợi ích rõ ràng là các hệ thống này có tốc độ ĐỌC tuyệt vời và tôi hy vọng tỷ lệ trúng của tôi khá cao.

Giả sử tôi có thể đặt 7 ổ SSD vào cấu hình RAID. (có một số trường hợp sẽ cho phép tôi đóng gói nhiều hơn nữa)

Câu hỏi thực hiện:

  • Có nên sử dụng RAID0? (Tôi hy vọng một ổ đĩa cuối cùng sẽ thất bại, vì vậy điều này có vẻ nguy hiểm.)

  • Có nên sử dụng RAID10? (Điều này giảm một nửa dấu chân đĩa của tôi, rất tốn kém.)

  • Có nên sử dụng RAID5? (SSD được biết là có hiệu suất ghi và ghi "xấu" và tất cả các lần ghi chẵn lẻ thêm có thể làm chậm đáng kể điều này.)

  • Tôi có nên coi mỗi đĩa là kho dữ liệu mực của riêng mình không? (con mực xử lý nhiều kho dữ liệu như thế nào? và điều gì xảy ra nếu / khi một lần thất bại?)

  • Tôi có nên bỏ qua kho dữ liệu và chỉ cần đặt SSD vào các phân vùng SWAP lớn và để máy ảo linux làm việc đó không? (có vẻ cẩu thả)

Mọi lời khuyên từ những người sử dụng SSD trong môi trường sản xuất sẽ được đánh giá rất cao. (đặc biệt nếu bạn đang sử dụng chúng cho bộ nhớ cache HTTP)


+1 cho một câu hỏi thú vị, tôi chưa bao giờ xem việc tạo các ổ đĩa chỉ trong một phân vùng trao đổi lớn
Bob

Vâng chắc chắn rất thú vị ... mặc dù tôi rất có xu hướng không rơi vào nhóm SSD và chỉ cần thêm RAM cho số tiền đó.
Oskar Duveborn

Đáng buồn thay, dấu chân bộ nhớ cache tôi cần sẽ không phù hợp với RAM. Tôi đã có sẵn bộ đệm mực được hỗ trợ RAM cho các đối tượng đó.
Joel K

Câu trả lời:


8

Chúng tôi đã sử dụng véc ni trên các ổ đĩa ssd trong 9 tháng qua, nó đã hoạt động rất tốt cho chúng tôi. Trước đây chúng tôi đã sử dụng bộ nhớ mực chỉ bộ nhớ cache với một lớp cá chép. Nó đã làm việc, nhưng phân mảnh bộ nhớ là một vấn đề thực sự đòi hỏi phải khởi động lại thường xuyên. Squid 2.x cũng sẽ chỉ sử dụng một lõi khiến nó không hiệu quả trên phần cứng hiện tại.

Đối với trang web của chúng tôi, rất thân thiện với bộ nhớ cache, chúng tôi thấy khoảng 10% sử dụng cpu trên máy 8 lõi phục vụ lưu lượng 100Mbit / giây. Trong các thử nghiệm của chúng tôi, chúng tôi hết băng thông trước khi đạt giới hạn cpu với 2 cổng 1Gb.

Tôi có một số lời khuyên cho việc chạy véc ni với bộ đệm ssd.

  • Hiệu suất viết ngẫu nhiên thực sự quan trọng. Chúng tôi đã thử một số nhà cung cấp cho các ổ đĩa ssd trước khi giải quyết trên intel x-25m. Chúng tôi đã thấy một số bài đăng ít nhất là .1MB / s cho 4k ghi ngẫu nhiên, chúng tôi nhận được 24MB / s 4k ghi ngẫu nhiên với x-25m.

  • Đột kích. Bộ nhớ cache trong 2.0 không liên tục, vì vậy không cần phải lo lắng về sự dư thừa. Điều này làm cho khởi động lại bị tổn thương, nhưng đó là những người hiếm. Bạn có thể làm những việc như tải một cấu hình mới và thanh lọc các đối tượng mà không cần khởi động lại.

  • chế độ mmap. Bộ đệm vecni có thể được mmap'd vào một tệp hoặc sử dụng không gian hoán đổi. Sử dụng trao đổi không hoạt động tốt đối với chúng tôi, nó có xu hướng sử dụng nhiều băng thông hơn để phục vụ cùng một lưu lượng. Có 4 phần đọc trong mã trao đổi linux, chúng tôi đã viết một bản vá để loại bỏ điều này nhưng chưa thử nó trong sản xuất.

  • Lịch trình thời hạn. Với 2.6.28+, đây là nhận thức ssd và hoạt động tốt. Chúng tôi đã thử noop nhưng thấy rằng thời hạn là công bằng hơn khi băng thông i / o trở nên hạn chế.

  • Vô hiệu hóa đọc trước. Vì không có độ trễ quay, không có điểm nào trong việc đọc thêm dữ liệu chỉ vì bạn có thể cần nó. i / o băng thông là quý giá về những điều này.

  • Chạy 2.6.28+. mmap của rất nhiều không gian trên linux mang lại cho người quản lý bộ nhớ một bài tập tốt, nhưng các bản vá lru chia nhỏ giúp ích rất nhiều. việc sử dụng cpu kswapd giảm rất nhiều khi chúng tôi cập nhật.

Chúng tôi đã đăng tập tin vcl của chúng tôi cũng như một số công cụ chúng tôi sử dụng với véc ni tại văn bản liên kết . Vcl cũng bao gồm một hack gọn gàng thực hiện một máy chủ Geoiplookup rất nhanh dựa trên cơ sở dữ liệu maxmind.


1

Tôi không sử dụng SSD làm bộ đệm HTTP, nhưng tôi có thể thực hiện các quan sát sau:

Không phải tất cả các ổ SSD đều như nhau, vì vậy bạn phải rất cẩn thận trong việc chọn những cái tốt. FusionIO tạo ra các ổ SSD được hỗ trợ bởi PCIe, những thiết bị thực sự cao cấp (có dung lượng tương đối thấp), nhưng tốn kém. SSD X25-E SLC của Intel hoạt động rất tốt và giá cả phải chăng hơn, nhưng vẫn có dung lượng thấp. Làm nghiên cứu của bạn! Tôi chắc chắn có thể đề xuất các biến thể X25-E SLC, vì tôi đang sử dụng các biến thể này trong các hệ thống sản xuất.

Ngoài ra còn có các SSDS khác có thể cung cấp cho bạn tốc độ đọc / ghi tuần tự tuyệt vời, nhưng điều quan trọng đối với thứ gì đó như bộ đệm là IO ngẫu nhiên và rất nhiều ổ SSD sẽ cho hiệu suất ngẫu nhiên tương đương với đĩa quay. Do hiệu ứng khuếch đại ghi trên SSD, đĩa quay thường sẽ hoạt động tốt hơn. Nhiều ổ SSD có bộ điều khiển chất lượng kém (ví dụ: bộ điều khiển JMicron cũ), có thể bị giảm hiệu suất đáng kể trong một số tình huống. Anandtech và các trang web khác thực hiện so sánh tốt với các công cụ như iometer, kiểm tra ở đó.

Và, tất nhiên, SSD là nhỏ. Intel X25-E, mà tôi muốn nói là SSD SSD tốt nhất tôi từng thấy, chỉ có các biến thể 32 và 64 GB.

Đối với các cấp RAID, ghi chú hiệu suất RAID tiêu chuẩn vẫn được áp dụng. Việc ghi vào RAID 5 về cơ bản liên quan đến việc đọc khối dữ liệu mà bạn sẽ sửa đổi, đọc khối chẵn lẻ, cập nhật tính chẵn lẻ, viết khối dữ liệu và viết chẵn lẻ, do đó nó vẫn sẽ cho hiệu năng kém hơn so với RAID khác cấp độ, ngay cả với SSD. Tuy nhiên, với các ổ đĩa như X25-E có hiệu suất IO ngẫu nhiên cao như vậy, điều này có lẽ ít quan trọng hơn - vì nó sẽ vẫn vượt trội so với IO ngẫu nhiên trên các đĩa quay cho một mảng có kích thước tương tự.

Từ những gì tôi đã thấy, băng thông của bộ điều khiển RAID đã bão hòa quá sớm để nhận được lợi ích cao nhất từ ​​bộ RAID 7 đĩa, ít nhất là về hiệu suất tuần tự. Bạn không thể nhận được hơn 800 MB / s trong số các mô hình bộ điều khiển SATA hiện tại (3ware, areca, v.v.). Có nhiều mảng nhỏ hơn, trên nhiều bộ điều khiển (ví dụ, một số RAID1 thay vì một RAID10) sẽ cải thiện điều này, mặc dù hiệu suất riêng của từng mảng sẽ bị ảnh hưởng.

Về bộ đệm HTTP, tôi nghĩ rằng bạn sẽ được phục vụ tốt hơn với một loạt các đĩa quay và nhiều ram. Các đối tượng thường xuyên truy cập sẽ ở trong bộ nhớ cache - trong bộ đệm trong của mực hoặc trong bộ đệm fs của hệ điều hành của bạn. Đơn giản chỉ cần cung cấp cho máy nhiều ram hơn có thể giảm đáng kể việc tải đĩa do điều này. Nếu bạn đang chạy bộ đệm mực lớn, có thể bạn sẽ muốn có nhiều dung lượng đĩa và ổ SSD hiệu suất cao vẫn chỉ có dung lượng tương đối thấp.


Ngay cả X25-M cũng có thể sử dụng được
Pyrolistic

Tôi đã làm xong bài tập về nhà và biết để tránh JMicrons. Tôi chủ yếu xem xét X25-Ms (Intel MLC) và có thể là dòng OCZ Vertex mới hơn (không phải JMicron).
Joel K

wow, đỉnh ocz có ghi ngẫu nhiên tối đa thấp hơn so với x25-m !!!
Pyrolistic

1

Tôi không rành lắm về các ổ SSD, nhưng tôi có thể nói về loại kiến ​​trúc tôi đã sử dụng có thể giúp giải quyết một số vấn đề của bạn.

Anh chị em ruột

Trong trường hợp của tôi, tôi đã xây dựng bốn máy chủ với 16GB RAM mỗi máy chủ. Tôi đặt 9GB làm bộ nhớ cache trong bộ nhớ cho Squid sử dụng. Tôi đã cấu hình chúng như một tập hợp các anh chị em để một truy vấn đến một máy chủ sẽ truy vấn các máy chủ khác trước khi tìm kiếm dữ liệu. Tổng cộng tôi có 36GB bộ nhớ cache. Tôi sẽ không có hơn bốn anh chị em khi giao tiếp giữa họ bắt đầu sa lầy.

VIP

Tôi đã cấu hình VIP cho bốn máy chủ để khách hàng nói chuyện. Điều này giải quyết những gì xảy ra khi một máy chủ ngừng hoạt động.

Bọn trẻ

Tôi đặt ứng dụng web của mình để truy vấn máy chủ Squid cục bộ đang chạy trên 127.0.0.1. Sau đó, cấu hình cha mẹ của cá thể Squid này là VIP. Điều này cho phép chuyển đổi dự phòng rất nhanh trong trường hợp toàn bộ VIP đi xuống. Nếu cha mẹ không trả lời, trẻ truy vấn trực tiếp các dịch vụ. Nó cũng hữu ích nếu bạn đang sử dụng một máy chủ Squid duy nhất và không có VIP. Tất nhiên, nếu cá thể Squid cục bộ trên máy chủ web của bạn bị hỏng mọi thứ sẽ dừng lại.

Mực ống

Tôi đã không thực sự nhìn vào 3.0, nhưng 2.x vẫn là một luồng đơn. Tại một số điểm bạn sẽ hết bộ đệm CPU hoặc TCP. Tôi sẽ trải bộ đệm qua 2-3 hộp ít hơn nếu có thể. Ngoài ra, bạn có thể muốn lập kế hoạch phân vùng trang trại Mực của mình trong tương lai nếu bạn thấy hệ thống đang phát triển.

Trong mọi trường hợp may mắn với bản dựng SSD của bạn. Tôi rất muốn nghe làm thế nào hóa ra vì có lẽ tôi sẽ đi theo con đường đó trong tương lai.


0

Tại sao bạn thậm chí xem xét đột kích 10 hoặc 5. Bạn muốn hiệu suất ở đây. Bạn không quan tâm nếu các ổ đĩa bị hỏng, vì nó chỉ là bộ đệm.

Chỉ cần sử dụng đột kích 0 hoặc giữ chúng riêng biệt. Tôi nghĩ riêng biệt sẽ tốt hơn, vì một lỗi ổ đĩa sẽ không làm mất toàn bộ bộ nhớ cache của bạn.


Squid phục hồi tốt như thế nào nếu một cửa hàng dữ liệu rơi ra? (rõ ràng tôi cần kiểm tra điều này) RAID5 là một sự thỏa hiệp nếu Squid không duyên dáng về một kho dữ liệu bị lỗi.
Joel K

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.