Just realized that the MongoDB site now has some recipes up for what you really 
need to do to make sure you can handle a lot of incoming new documents 
concurrently….

Boy you had to figure this stuff out yourself just last year - I guess the 
mongo community has come a very long way….

Splitting Shard Chunks - MongoDB


enjoy….

RB

On Jan 2, 2012, at 5:38 PM, Robert Boyer wrote:

> Sorry one more thought and a clarification….
> 
> 
> I have found that it is best to run mongos with each app server instance most 
> of the mongo interface libraries aren't intelligent about the way that they 
> distribute requests to available mongos processes. mongos processes are also 
> relatively lightweight and need no coordination or synchronization with each 
> other - simplifies things a lot and makes any potential bugs/complexity with 
> app server/mongo db connection logic just go away.
> 
> It's pretty important when configuring shards to take on the write volume 
> that you do your best to pre-allocate chunks and avoid chunk migrations 
> during your traffic floods - not hard to do at all. There are also about a 
> million different ways to deal with atomicity (if that is a word) and a very 
> mongo specific way of ensuring writes actually "made it to disk" somewhere = 
> from your brief description of the app in question it does not sound that it 
> is too critical to ensure "every single solitary piece of data persists no 
> matter what" as I am assuming most of it is irrelevant and becomes completely 
> irrelevant after the show- or some time there after. Most of the programing 
> and config examples make an opposite assumption in that they assume that each 
> transaction MUST be completely durable - if you forgo that you can get 
> screaming TPS out of a mongo shard.
> 
> Also if you do not find what you are looking for via a ruby support group - 
> the JS and node JS community also may be of assistance but they tend to have 
> a very narrow view of the world…. ;-)
> 
> RB
> On Jan 2, 2012, at 4:21 PM, Robert Boyer wrote:
> 
>> To deal with this kind of traffic you will most likely need to set up a 
>> mongo db cluster of more than a few instances… much better. There should be 
>> A LOT of info on how to scale mongo to the level you are looking for but 
>> most likely you will find that on ruby forums NOT on *NIX boards….
>> 
>> The OS boards/focus will help you with fine tuning but all the fine tuning 
>> in the world will not solve an app architecture issue…
>> 
>> I have setup MASSIVE mongo/ruby installs for testing that can do this sort 
>> of volume with ease… the stack looks something like this….
>> 
>> Nginix 
>> Unicorn
>> Sinatra
>> MongoMapper
>> MongoDB
>> 
>> with only one Nginix instance can feed an almost arbitrary number of 
>> Unicorn/Sinatra/MongoMapper instances that can in turn feed a properly 
>> configured MongoDB cluster with pre-allocated key distribution so that the 
>> incoming inserts are spread evenly against the cluster instances…
>> 
>> Even if you do not use ruby that community will have scads of info on 
>> scaling MongoDB.
>> 
>> One more comment related to L's advice - true you DO NOT want more 
>> transactions queued up if your back-end resources cannot handle the TPS - 
>> this will just make the issue harder to isolate and potentially make the 
>> recovery more difficult. Better to reject the connection at the front-end 
>> than take it and blow up the app/system.
>> 
>> The beauty of the Nginix/Unicorn solution (Unicorn is ruby specific) is that 
>> there is no queue that is feed to the workers when there are no workers - 
>> the request is rejected. The unicorn worker model can be reproduced for any 
>> other implementation environment (PHP/Perl/C/etc) outside of ruby in about 
>> 30 minutes. It's simple and Nginix is very well suited to low overhead 
>> reverse proxy to this kind of setup.
>> 
>> Wishing you the best - if i can be of more help let me know…
>> 
>> RB
>> 
>> On Jan 2, 2012, at 3:38 PM, Eduardo Morras wrote:
>> 
>>> At 20:12 02/01/2012, Muhammet S. AYDIN wrote:
>>>> Hello everyone.
>>>> 
>>>> My first post here and I'd like to thank everyone who's involved within the
>>>> FreeBSD project. We are using FreeBSD on our web servers and we are very
>>>> happy with it.
>>>> 
>>>> We have an online messaging application that is using mongodb. Our members
>>>> send messages to "the voice" show's (turkish version) contestants. Our two
>>>> mongodb instances ended up in two centos6 servers. We have failed. So hard.
>>>> There were announcements and calls made live on tv. We had +30K/sec
>>>> visitors to the app.
>>>> 
>>>> When I looked at the mongodb errors, I had thousands of these:
>>>> http://pastie.org/private/nd681sndos0bednzjea0g. You may be wondering why
>>>> I'm telling you about centos. Well, we are making the switch from centos to
>>>> freebsd FreeBSD. I would like to know what are our limits? How we can set
>>>> it up so our FreeBSD servers can handle min 20K connections (mongodb's
>>>> connection limit)?
>>>> 
>>>> Our two servers have 24 core CPUs and 32 GBs of RAM. We are also very open
>>>> to suggestions. Please help me out here so we don't fail deadly, again.
>>>> 
>>>> ps. this question was asked in the forums as well however as someone
>>>> suggested in the forums, i am posting it here too.
>>> 
>>> Is your app limited by cpu or by i/o? What do vmstat/iostat says about your 
>>> hd usage? Perhaps mongodb fails to read/write fast enough and making 
>>> process thread pool bigger only will make problem worse, there will be more 
>>> threads trying to read/write.
>>> 
>>> Have you already tuned mongodb?
>>> 
>>> Post more info please, several lines (not the first one) of iostat and 
>>> vmstat may be a start. Your hd configuration, raid, etc... too.
>>> 
>>> L 
>>> 
>>> _______________________________________________
>>> freebsd-questions@freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
>>> To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"
>> 
>> _______________________________________________
>> freebsd-questions@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
>> To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"
> 
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to