2011-07-28 23 views
6

Tôi muốn tích hợp MongoDB vào ứng dụng của mình. Tôi đã thử nghiệm bằng cách sử dụng công cụ Banchmarking Apache và sản xuất 1,00.000 yêu cầu đến với 1000 mức độ tương tranh. Sau khi một số thử nghiệm chèn bản ghi trong mongodb, tôi có thể tìm ra rằng nó được chèn khoảng 1000 rec/sec. Nhưng nó không đủ cho ứng dụng của tôi. Ai có thể đề nghị rằng cách tốt nhất để cải thiện perofmance là gì, để tôi có thể đạt được mục tiêu của 2000 rec/sec.Cải thiện hiệu suất trong Mongodb bằng trình điều khiển java

Mã của tôi là:

private static MongoOptions mo = new MongoOptions(); 
mo.connectionsPerHost = 20; 
mo.threadsAllowedToBlockForConnectionMultiplier = 100; 
private static Mongo m = new Mongo("127.0.0.1",mo);  
private static DB db = m.getDB("mydb"); 
private static DBCollection coll = db.getCollection("mycoll"); 
DBObject dbObj = (DBObject) JSON.parse(msg); 
db.requestStart();  
coll.insert(dbObj);  
dbObj.removeField("_id");  
dbObj.put("val", "-10"); 
coll.insert(dbObj); 
db.requestDone(); 
+1

Xem điều này có giúp ích: http://stackoverflow.com/questions/6783212/how-to-load-100-million-records-into-mongodb-with-scala-for-performance-testing/6786925#6786925 – DhruvPathak

+0

Bạn có chắc chắn rằng bạn đang chạy vào một mongo áp đặt nút cổ chai? 1000 lần chèn mỗi giây cực kỳ chậm. Tôi có thể dễ dàng nhấn 20.000 lần chèn mỗi giây trên máy dev địa phương của tôi một mình. Đảm bảo bạn đang đo điểm chuẩn chính xác. Trên một máy chủ sản xuất lành mạnh, thông lượng chèn nên nhiều, tốt hơn nhiều. –

+0

Tôi đang sử dụng máy chủ tomcate. Có cấu hình MongoOption nào không? Bạn có thể cho tôi biết số lượng kết nối cho mỗi máy chủ bạn đang cung cấp không? –

Trả lời

2

Có 1000 khách hàng (đó là những gì tôi giả sử bạn có nghĩa là theo trình độ đồng thời 1000) nhấn DB cùng một lúc âm thanh cao đối với tôi. Nếu nó đang chạy trên một hệ thống lõi 1-2 hộp của bạn có thể dành nhiều thời gian chuyển đổi giữa các quá trình khác nhau. Công cụ DB và điểm chuẩn có chạy trên cùng một hộp không? Điều đó sẽ làm tăng lượng thời gian mà nó dành cho quá trình chuyển đổi.

Bạn có thể thử đặt khách hàng lên một hộp đa lõi và DB trên một hộp đa lõi khác.

Hoặc thử chạy ít ứng dụng mô phỏng hơn 10-20.

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