草庐IT

mongodb - 写入时出现 MongoDB 错误 - 超出配额

coder 2023-10-31 原文

我有一个写入副本集的 JAVA 应用程序。我正在使用 3.0.7 版本的 MongoDB 服务器。 Java 的 mongo-driver 是 3.0.4。 它工作得很好,但现在所有写入都出现以下错误:

com.mongodb.MongoWriteException: quota exceeded
at    com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:487)
at com.mongodb.MongoCollectionImpl.update(MongoCollectionImpl.java:474)
at com.mongodb.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:325)

查看了 MongoDB 配置文档,我没有在 mongod.conf 中设置任何配额限制。我也不使用 smallFiles。

但我认为我遇到了文件大小限制。我的数据库的文件大小如下:

total 6240548
-rw------- 1 mongod mongod   67108864 Dec  8 16:55 2015.0
-rw------- 1 mongod mongod  134217728 Dec  8 12:15 2015.1
-rw------- 1 mongod mongod  268435456 Dec  8 12:15 2015.2
-rw------- 1 mongod mongod  536870912 Dec  8 12:15 2015.3
-rw------- 1 mongod mongod 1073741824 Dec  8 12:15 2015.4
-rw------- 1 mongod mongod 2146435072 Dec  8 16:06 2015.5
-rw------- 1 mongod mongod 2146435072 Dec  8 16:06 2015.6
-rw------- 1 mongod mongod   16777216 Dec  8 16:55 2015.ns
drwxr-xr-x 2 mongod mongod       4096 Dec  7 09:14 _tmp

/etc/mongod.conf 如下:

    storage:
       dbPath: /data/mongoDB
       indexBuildRetry: true
       repairPath: /data/mongoDB/repair
       journal:
          enabled: true
       directoryPerDB: true
       syncPeriodSecs: 60
       engine: mmapv1
       mmapv1:
          preallocDataFiles: false
          nsSize: 16
          quota:
             enforced: false
             maxFilesPerDB: 8
          smallFiles: false
          journal:
             debugFlags: 0
             commitIntervalMs: 100

可能出了什么问题?

PS:正在使用/etc/mongod.conf。

mongod   10864     1  0 Nov16 ?        03:10:34 /usr/bin/mongod -f /etc/mongod.conf

更新 - 1。通过将集合名称更改为新集合来尝试相同的更新。成功了!但还没有解释这个问题。 2. 将 java 驱动程序更改为 3.0.3,但没有帮助。

Update- 2:(12/9) 添加集合统计信息,因为它与集合本身和 java 驱动程序有关。如果有什么问题请告诉我。

    {
        "ns" : "2015.events",
        "count" : 827054,
        "size" : 3814018,
        "avgObjSize" : 4722,
        "numExtents" : 22,
        "extents" : [
            {
                "len" : 8192,
                "loc: " : {
                    "file" : 0,
                    "offset" : 20480
                }
            },
            {
                "len" : 32768,
                "loc: " : {
                    "file" : 0,
                    "offset" : 2134016
                }
            },
            {
                "len" : 131072,
                "loc: " : {
                    "file" : 0,
                    "offset" : 2166784
                }
            },
            {
                "len" : 524288,
                "loc: " : {
                    "file" : 0,
                    "offset" : 2297856
                }
            },
            {
                "len" : 2097152,
                "loc: " : {
                    "file" : 0,
                    "offset" : 2822144
                }
            },
            {
                "len" : 8388608,
                "loc: " : {
                    "file" : 0,
                    "offset" : 4919296
                }
            },
            {
                "len" : 11325440,
                "loc: " : {
                    "file" : 0,
                    "offset" : 14356480
                }
            },
            {
                "len" : 15290368,
                "loc: " : {
                    "file" : 0,
                    "offset" : 28827648
                }
            },
            {
                "len" : 20643840,
                "loc: " : {
                    "file" : 0,
                    "offset" : 44118016
                }
            },
            {
                "len" : 27869184,
                "loc: " : {
                    "file" : 1,
                    "offset" : 8192
                }
            },
            {
                "len" : 37625856,
                "loc: " : {
                    "file" : 1,
                    "offset" : 36265984
                }
            },
            {
                "len" : 50798592,
                "loc: " : {
                    "file" : 1,
                    "offset" : 78086144
                }
            },
            {
                "len" : 68579328,
                "loc: " : {
                    "file" : 2,
                    "offset" : 8396800
                }
            },
            {
                "len" : 92585984,
                "loc: " : {
                    "file" : 2,
                    "offset" : 93753344
                }
            },
            {
                "len" : 124993536,
                "loc: " : {
                    "file" : 3,
                    "offset" : 8192
                }
            },
            {
                "len" : 168742912,
                "loc: " : {
                    "file" : 3,
                    "offset" : 125001728
                }
            },
            {
                "len" : 227803136,
                "loc: " : {
                    "file" : 4,
                    "offset" : 8192
                }
            },
            {
                "len" : 307535872,
                "loc: " : {
                    "file" : 4,
                    "offset" : 239136768
                }
            },
            {
                "len" : 415174656,
                "loc: " : {
                    "file" : 4,
                    "offset" : 595939328
                }
            },
            {
                "len" : 560488448,
                "loc: " : {
                    "file" : 5,
                    "offset" : 8192
                }
            },
            {
                "len" : 756662272,
                "loc: " : {
                    "file" : 5,
                    "offset" : 607756288
                }
            },
            {
                "len" : 1021497344,
                "loc: " : {
                    "file" : 6,
                    "offset" : 8192
                }
            }
        ],
        "storageSize" : 3826952,
        "lastExtentSize" : 997556,
        "paddingFactor" : 1,
        "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
        "userFlags" : 1,
        "capped" : false,
        "nindexes" : 8,
        "indexDetails" : {

        },
        "totalIndexSize" : 348270,
        "indexSizes" : {
            "_id_" : 47123,
            "remoteRequest.uri_1" : 76969,
            "transactionId_1" : 59611,
            "startTime_1" : 39027,
            "endTime_1" : 35235,
            "remoteRequest.queryParams.q_1" : 20328,
            "remoteRequest.queryParams.fq_1" : 38285,
            "elapsedTimeInNanos_1" : 31689
        },
        "ok" : 1
    }

最佳答案

您的 mongod.conf 有一个 quota为每个数据库启用。基于该 mongod.conf 文件,您将无法创建超过 8 个数据库文件,这限制了您最大约 6.4 GB 的存储空间。你提到你可以通过使用一个新的集合来解决这个问题,所以我对你的数据目录现在的样子很感兴趣。我不希望您能够绕过这个硬限制,但是由于内部数据结构,可能会在短时间内“绕过”它。

您可以通过运行 dbStats command 来验证实际存储了多少数据

use 2015
db.stats(1024*1024)

此输出将告诉您数据库中实际有多少数据,以及分配的存储量。这些数字将匹配,这是预期的,因为文档包含用于填充的空白空间。

我的下一个问题是,您是否有理由人为地限制您的 mongod 可以分配的存储空间量?也许是 capped collection会更适合您的需求?如果你能扩展你的用途,我或许可以给你一个更好的答案。

关于mongodb - 写入时出现 MongoDB 错误 - 超出配额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166991/

有关mongodb - 写入时出现 MongoDB 错误 - 超出配额的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  4. Ruby 写入和读取对象到文件 - 2

    好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信

  5. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  6. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  7. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  8. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  9. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  10. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

随机推荐