Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5963549
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T19:16:22+00:00 2026-05-22T19:16:22+00:00

I wrote a short Ruby script to profile MongoDB, just to see how its

  • 0

I wrote a short Ruby script to profile MongoDB, just to see how its disk space increased as I added records. I wanted it to create 100,000,000 records, but inserts started silently failing a little after 7,000,000. Any ideas why? Here is the code:

#!/usr/bin/env ruby

require 'rubygems'
require 'mongo'

@conn = Mongo::Connection.new
@conn.drop_database('benchmark')
@db = @conn['benchmark']
@reqs = @db['requests']

last_count = 0
last_elapsed = 0
total_elapsed = 0

puts
puts "inserts\tsize\tt_elapsed\tt_per_insert"

print_at = [
    1,
    1000,
    # ...
    7_000_000,
    8_000_000,
    # ...
].inject({}) {|h,x| h[x] = 1; h}

1.upto 100_000_000 do |i|
  req = {'user_id' => i,
         'role_name' => 'user',
         'day' => [2011,5,30],
         'method' => 'get',
         'page' => 'http://www.example.com/users/5/edit',
         'referrer' => 'http://www.example.com/projects/57/notes'}
  t1 = Time.new
  @reqs.insert(req)
  t2 = Time.new
  total_elapsed += t2 - t1
  if print_at[i]
    elapsed_per = (total_elapsed - last_elapsed) / (i - last_count)
    puts "#{i}\t#{@reqs.stats['storageSize']}\t#{total_elapsed}\t#{elapsed_per}\t#{@reqs.count}"
    last_count = i
    last_elapsed = total_elapsed
  end
end

Here are the results:

inserts size    t_elapsed   t_per_insert
1   13568   0.000333    0.000333    1
1000    284928  0.440234999999999   0.000440342342342342    1000
5000    4626688 2.399554    0.000489829750000001    5000
10000   4626688 4.04515699999996    0.00032912059999999 10000
50000   18520320    18.3045380000001    0.000356484525000004    50000
100000  35192576    36.1132420000052    0.000356174080000102    100000
250000  79207168    89.8520730000556    0.000358258873333669    250000
500000  142587904   179.141312000645    0.000357156956002356    500000
750000  184073216   262.518961001337    0.00033351059600277 750000
1000000 233855488   347.697380001333    0.000340713675999983    1000000
2000000 554531072   722.684815985293    0.00037498743598396 2000000
3000000 827051520   1122.17787597268    0.000399493059987388    3000000
4000000 1005428224  1468.68356799303    0.000346505692020353    4000000
5000000 1219480064.0    1803.55257001283    0.000334869002019792    5000000
6000000 1476342016.0    2152.29274403266    0.000348740174019833    6000000
7000000 1784576256.0    2497.58802604997    0.000345295282017315    7000000
8000000 1784576256.0    2877.84758905944    0.000380259563009462    7692111

You can see in that last line that after doing 8,000,000 saves, the db only has 7,692,111 entries.

Here is a little environment info:

$ ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
$ uname -a
Linux shiny 2.6.31-19-generic #56-Ubuntu SMP Thu Jan 28 01:26:53 UTC 2010 i686 GNU/Linux
$ mongod --version
db version v1.8.1, pdfile version 4.5
Sun May 29 21:58:20 git version: a429cd4f535b2499cc4130b06ff7c26f41c00f04

Note that my disk still has 22G free after running this test, so I guess that’s not the problem. Here are the MongoDB files:

$ ls -lh /var/lib/mongodb
total 3.0G
-rw------- 1 mongodb nogroup  16M 2011-05-29 17:24 benchmark.0
-rw------- 1 mongodb nogroup  32M 2011-05-29 16:38 benchmark.1
-rw------- 1 mongodb nogroup  64M 2011-05-29 16:36 benchmark.2
-rw------- 1 mongodb nogroup 128M 2011-05-29 16:39 benchmark.3
-rw------- 1 mongodb nogroup 256M 2011-05-29 16:48 benchmark.4
-rw------- 1 mongodb nogroup 512M 2011-05-29 16:58 benchmark.5
-rw------- 1 mongodb nogroup 512M 2011-05-29 17:09 benchmark.6
-rw------- 1 mongodb nogroup 512M 2011-05-29 17:17 benchmark.7
-rw------- 1 mongodb nogroup 512M 2011-05-29 17:24 benchmark.8
-rw------- 1 mongodb nogroup 512M 2011-05-29 17:16 benchmark.9
-rw------- 1 mongodb nogroup  16M 2011-05-29 17:24 benchmark.ns
-rwxr-xr-x 1 mongodb nogroup    6 2011-05-28 15:46 mongod.lock
drwxr-xr-x 2 mongodb nogroup 4.0K 2011-05-29 16:34 _tmp

I guess regardless of the specific reason for the failed inserts, I’d especially like to know why no exception was raised. I understand with replication the user can “succeed” before all nodes have successfully saved the data, but that shouldn’t be the issue with just a vanilla instance running on my laptop, right?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T19:16:23+00:00Added an answer on May 22, 2026 at 7:16 pm

    There is a 32 bit restriction in mongo. which allows only 2.5 GB of data to be stored. Thats the max size. Check this link for more info.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Just wrote a short script of copying all my tables into another local database.
I wrote a short bash script to complete a task that involves creating a
So I wrote this short script (correct word?) to download the comic images from
I wrote a short bash script that is supposed to strip the leading tabs/spaces
I wrote a short bit of code to simply skip num_lines lines in an
To help me better understand lambda I wrote this short snippet that rotates and
I'm writing a script in Ruby for work. Our company uses FileMaker Pro for
When I decided to learn Ruby a short while ago I also decided that
I wrote a short test code in Java to upload a PDF file generated
I wrote this short program to learn the javax.sound.midi system. This is using Java

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.