2011-12-09 38 views
20

tôi sẽ có một trang web với hơn 20 nghìn người dùng đồng thời.mongodb và kết nối tối đa

tôi sẽ sử dụng mongodb bằng một nút quản lý và 3 nút trở lên để xóa dữ liệu.

hiện tại sự cố của tôi là kết nối tối đa. nếu tôi có nhiều người dùng truy cập vào cơ sở dữ liệu, làm thế nào tôi có thể chắc chắn rằng họ không đạt đến giới hạn tối đa? tôi cũng phải thay đổi bất cứ điều gì có thể trên hạt nhân để tăng kết nối?

về cơ bản cơ sở dữ liệu sẽ được sử dụng để giữ người dùng được kết nối với trang web, vì vậy sẽ có hoạt động đọc/ghi nặng.

cảm ơn bạn trước.

+1

sử dụng kết nối liên tục, có thể sử dụng được trong hầu hết các trình điều khiển mongodb. – DhruvPathak

+0

Nó sẽ giúp khá nhiều để biết stack ưa thích của bạn (LAMP/PHP/Perl/Python/Ruby trên Rails/Apache/Tomcat/Windows/Linux?) – Kato

Trả lời

23

Bạn không muốn mở kết nối cơ sở dữ liệu mới mỗi khi người dùng mới kết nối. Tôi không biết liệu bạn có thể mở rộng đến 20k + người dùng đồng thời một cách dễ dàng không, vì MongoDB sử dụng một chuỗi mới cho mỗi kết nối mới. Bạn muốn chương trình phụ trợ ứng dụng web của bạn chỉ có một đến một vài kết nối cơ sở dữ liệu mở và chỉ sử dụng các kết nối đó trong một nhóm, đặc biệt vì việc sử dụng web rất không đồng bộ và sự kiện được điều khiển.

xem: http://www.mongodb.org/display/DOCS/Connections

Các máy chủ sẽ sử dụng một thread mỗi kết nối TCP , do đó nó được đánh giá cao được đề nghị rằng ứng dụng của bạn sử dụng một số loại kết nối tổng hợp. May mắn thay, hầu hết các trình điều khiển xử lý này cho bạn đằng sau hậu trường. Một ngoại lệ đáng chú ý là các thiết lập nơi ứng dụng của bạn sinh ra một quy trình mới cho từng yêu cầu, chẳng hạn như CGI và một số cấu hình của PHP.

Bất kể bạn đang sử dụng trình điều khiển nào, bạn sẽ phải tìm hiểu cách họ xử lý các kết nối và liệu họ có thể kết nối hay không. Ví dụ, Mongode của Node không bị chặn và do đó bạn thường sử dụng một kết nối cho mỗi ứng dụng. Đây là loại điều bạn có thể muốn.

+0

cảm ơn câu trả lời của bạn, bây giờ, tôi là tổng noob .. Điều gì là trình điều khiển này bạn đang nói về? làm thế nào tôi có thể thiết lập nó? cảm ơn bạn –

+1

@enrico Vâng, mô hình lập trình bạn muốn sử dụng là lập trình dựa trên sự kiện chứ không phải mô hình dựa trên luồng mà bạn đang nghĩ tới. Node.js + Express + Mongoose + MongoDB là một ngăn xếp phổ biến cho việc này. Nếu bạn đang ở trong Perl, hãy nhìn vào Mojolicious hoặc AnyEvent. Vấn đề bạn sẽ gặp phải nếu bạn không sử dụng hệ thống có sự kiện, là sự cố C10k: http://www.kegel.com/c10k.html Tôi có ví dụ về ứng dụng web Node.js tại đây: http : //github.com/EhevuTov/netPeek – EhevuTov

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