2013-08-03 30 views
5

Tôi đã cài đặt MongoDB 2.4.4 trên Amazon EC2 với hệ điều hành 64 bit ubuntu và RAM 1.6 GB.mongodb sử dụng cpu cao

Trên máy chủ này, chỉ MongoDB chạy không có gì khác.

Nhưng đôi khi sử dụng CPU đạt đến 99% và tải trung bình: 500,01, 400,73, 620,77

Tôi cũng đã cài đặt MMS trên máy chủ để theo dõi những gì đang xảy ra server.

Dưới đây là chi tiết MMS enter image description here

Theo chi tiết MMS, lập chỉ mục làm việc một cách hoàn hảo cho mỗi truy vấn.

chi tiết nghi ngờ như sau

1) CAO bộ nhớ ảo không ánh xạ

lỗi

2) trang CAO

bất cứ ai có thể giúp tôi hiểu chính xác những gì gây ra việc sử dụng CPU cao?

EDIT:

Sau ý kiến ​​của @Dylan Tông, tôi đã giảm connetions hoạt động nhưng vẫn còn cao không ánh xạ bộ nhớ ảo

enter image description here

+0

bạn có một số lượng lớn các kết nối được mở. Bạn đang thực hiện những hoạt động nào? –

+0

@DylanTong Thông thường có các hoạt động chèn, cập nhật, đọc. Chúng tôi sử dụng MongoDB để báo cáo cơ sở dữ liệu. – GBD

+0

Số lượng lớn các kết nối hoạt động sẽ giải thích tại sao bạn có quá nhiều bộ nhớ chưa được ánh xạ. Ngoài ra nếu bạn có ~ 13k hoạt động kết nối làm việc sau đó tôi mong đợi rất nhiều việc sử dụng CPU. Nó không có vẻ giống như hộp của bạn là rất beefy để xử lý loại tải. Thật kỳ lạ, bảng điều khiển opcounters của bạn cho thấy rất ít ops trong khung thời gian hiển thị. 13k kết nối hoạt động dự kiến? Bạn có bao nhiêu máy khách/chủ đề và kích thước nhóm kết nối được cấu hình là gì? Bạn có đóng con trỏ trong ứng dụng của mình không? –

Trả lời

4

Dưới đây là một tóm tắt một số điều cần xem xét:

1. Quan sát một số lượng lớn các kết nối và con trỏ (13k): - sửa lỗi: đảm bảo hồ bơi kết nối của bạn phù hợp. Đối với báo cáo và tỷ lệ yêu cầu hiện tại của bạn, bạn chỉ cần một vài kết nối. Ngoài ra, tôi đoán bạn có một ví dụ m1small, có nghĩa là bạn chỉ có 1 lõi.

2. Xem lại truy vấn và chỉ mục: - chạy truy vấn của bạn với giải thích(), để quan sát cách truy vấn được thực hiện. Mô hình đúng thường dẫn đến các truy vấn chỉ kéo rất ít tài liệu và sử dụng một chỉ mục.

3. Bộ nhớ (cài đặt nhỏ gọn và đọc): - tận dụng tối đa bộ nhớ. 1.6GB thấp. Kiểm tra xem bạn có bao nhiêu bộ nhớ miễn phí và so sánh nó với những gì được báo cáo là cư dân. Một vài nguyên nhân phổ biến của bộ nhớ cư trú thấp là do sự phân mảnh. Nếu có rất nhiều tài liệu di chuyển, thay đổi kích cỡ và như vậy, bạn nên chạy lệnh nhỏ gọn để chống phân mảnh các tệp dữ liệu của bạn. Ngoài ra, một bản đọc kém cũng có thể dẫn đến việc sử dụng bộ nhớ kém. Kiểm tra cài đặt readahead của bạn (http://manpages.ubuntu.com/manpages/lucid/man2/readahead.2.html). Hãy thử một vài giá trị bắt đầu với giá trị thấp (http://docs.mongodb.org/manual/administration/production-notes/). Ghi chú sản xuất đề xuất 32 (đối với các khối 512byte chuẩn). Đôi khi các giá trị cao hơn là tối ưu nếu tài liệu của bạn lớn hơn. Hy vọng là bộ nhớ thường trú phải gần với bộ nhớ có sẵn của bạn và lỗi trang của bạn sẽ bắt đầu giảm xuống.

Nếu bạn đang sử dụng tài nguyên đầy đủ nhất sau này và bạn vẫn bị giới hạn trên CPU thì điều đó có nghĩa là bạn cần tăng nguồn lực của mình.

+0

Làm cách nào để kiểm tra và sửa đổi cài đặt đọc? – GBD

+0

blockdev --setra (http://linux.die.net/man/8/blockdev). Tôi sẽ đi qua liên kết Ghi chú sản xuất mà tôi đã gửi cho bạn. Có các thiết lập khác trong đó sẽ làm giảm chi phí của đĩa của bạn và tăng tốc độ IO. –

+0

Tôi không có nhiều chuyên gia về máy chủ. Tại sao bạn không tham gia với chúng tôi với tư cách là quản trị viên máy chủ mongodb? – GBD