2012-03-20 23 views
5

Tôi hiện đang điểm chuẩn Cassandra với 3 nút sử dụng CassandraSharp. mối quan tâm chính của tôi là trễ hơn thông, vì vậy sau một chút GC chỉnh ở đây là những con số của tôi (trên 100 000 N chèn, mono-thread):Làm thế nào để có được thời gian chèn đáng tin cậy trong Cassandra?

  • Iter/sec: 1600
  • trung bình: 600μs
  • 95 cent: 600μs
  • 99 cent: 5000μs
  • Max: 50 000μs

vấn đề của tôi ở đây là một lần trong một thời gian tôi nhận được một "xấu" cuối ncy (50ms), mục tiêu của tôi là có độ trễ nhất quán, ngay cả với chi phí trung bình cao hơn.

Tôi tin rằng điều này là do GC, và tôi tự hỏi nếu nó có thể tránh được.

(Như một mặt lưu ý, nó là một thực hành tốt để gửi một lượng lớn chèn vào một nút và để cho nó xử lý nó hay tôi nên "cân bằng tải" nó trong các khách hàng?)

+0

Bạn có thể cho chúng tôi biết cách bạn điều chỉnh GC không? Thx – odiszapc

Trả lời

2

50ms nằm trong phạm vi bình thường cho bộ sưu tập rác thải thế hệ trẻ. Bạn có thể bật ghi nhật ký GC trong cassandra-env.sh bằng cách bỏ ghi chú các dòng thích hợp về phía dưới để xác minh rằng đây là vấn đề.

(Flushes không chặn chèn trừ khi đĩa của bạn như vậy là chậm nó không thể theo kịp với khối lượng chèn, đó là không bình thường kể từ bừng là tuần tự I/O).

Nếu bộ sưu tập thế hệ trẻ đang thực sự tương quan với độ trễ cao hơn, bạn có thể giảm thử làm cho thế hệ trẻ nhỏ hơn (cũng được cấu hình trong cassandra-env.sh), với chi phí tiềm năng của thời gian chờ giao dịch cho thông lượng.

+0

Tôi đã trải qua giai đoạn tối ưu hóa GC và có một không gian thế hệ trẻ tối thiểu để tăng tốc thời gian GC. Vì vậy, tôi đoán nó sẽ không nhận được bất kỳ tốt hơn so với: / – alprema

1

I don' Tôi nghĩ rằng bạn sẽ có thể thoát khỏi vấn đề thời gian chờ xấu một lần trong một thời gian. Nó rất có thể là GC mà bạn đề cập, hoặc khi nó thực hiện một tuôn ra đĩa từ Memtables.

Chèn 50ms có thực sự là vấn đề không? Cassandra hỗ trợ các bộ biến đổi hàng loạt cho phép bạn xếp hàng các hoạt động chèn của bạn lên trong một trình tắt dài và sau đó thực hiện hàng loạt lần chèn sau đó sao cho sợi chính của bạn không cần bị chặn bởi chèn đồng bộ có thể mất nhiều thời gian hơn kỳ vọng. Tôi đã không sử dụng CassandarSharp vì vậy không biết liệu nó cho thấy chức năng này.

Ngoài ra, cân bằng tải trên các nút cassandra sẽ cải thiện một chút thời gian nhập của bạn, nhưng hãy nhớ rằng những gì đang xảy ra đằng sau hậu trường là nút bạn cung cấp việc nhập sẽ đưa nó đến nút chính xác để lưu trữ (do đó, các nút bạn cung cấp cho nó để hoạt động như một proxy thực sự) vì vậy tôi sẽ không tưởng tượng nhiều cải tiến trong trường hợp cạnh chung. Nó sẽ giúp bạn nếu vì một số lý do mà nút bắt đầu làm những việc khác và hiệu suất của nó bị ảnh hưởng.

0

Nếu bạn quan tâm đến thời gian chèn đáng tin cậy, bạn có thể muốn kiểm tra phân phối Acunu của Cassandra, cung cấp độ trễ ổn định hơn 100x khi chèn: Cassandra under Heavy Write Load (lưu ý đặc biệt ảnh thứ hai).

+0

Lưu ý rằng điểm chuẩn này đã lỗi thời bởi việc giới thiệu phân bổ đấu trường cho memtables trong Cassandra 1.0, loại bỏ loại dừng tạm thời thế hệ cũ gc được thấy ở đây. (Chi tiết: https: //issues.apache.org/jira/browse/CASSANDRA-2252) – jbellis

Các vấn đề liên quan