nginxs

运维博客

mongodb3.2日志配置 【翻译】

2016/03/31 23:52 于 安全 0

微信 微博 豆瓣 人人

文中剪辑
使用“systemLog.verbosity ”来给所有的组件配置默认的日至级别。
使用“systemLog.component..verbosity”来给指定的组件设置日志级别。

举例:
接下来设置
“systemLog.verbosity”为“1”
“systemLog.component.query.verbosity”为“2”
“systemLog.component.storage.verbosity”为“2”
“systemLog.component.storage.journal.verbosity ”为“1”

配置里面写法(就是YAML的写法,每级缩进两个空格)

systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1

所有的未组件指定配置使用“systemLog.verbosity”指定的1级别。

mongodb日志包括 一下部分:时间- 日志级别组件名执行操作日志内容
从mongodb3.0开始mongodb开始包含每行日志级别和日志内容相关的组件.

<timestamp> <severity> <component> [<context>] <message>
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

  1. 时间

时间的格式默认是ISO-8601-local,修改时间格式请更改此参数“systemlog.timeStampFormat”.


  • 日志严重级别

日志级别描述

Level Description
F Fatal
E Error
W Warning
I Informational, for Verbosity Level of 0
D Debug, for All Verbosity Levels > 0

可以指定各个组件的日志级别来确定信息量和debug信息的输出



  • 组件

       当前日志中包含的很多组件,分为一下:

  • ACCESS

     修改参数:systemLog.component.accessControl.verbosity 
    关于访问控制和用户认证的详细情况,会使用此组件显示到日志中

  • COMMAND

    修改参数:systemLog.component.command.verbosity
    涉及到数据库的命令,如计数的消息。要指定命令组件的日志级别,使用系统Log.component.command.verbosity设置。

  • CONTROL

     修改参数:systemLog.component.control.verbosity 
    控制活动,如初始化相关的消息。

  • FTDC

    修改参数:systemLog.component.ftdc.verbosity
    关于数据诊断收集的相关部分,例如服务器统计信息和状态信息。


  • GEO

    修改参数:systemLog.component.geo.verbosity
    有关地理空间的信息,例如验证以GeoJSON类型的解析的消息。


  • INDEX

     修改参数: systemLog.component.index.verbosity
    索引相关的操作,创建索引。

  • NETWORK

    有关网络活动的消息,例如接受和断开连接。
    修改参数: systemLog.component.network.verbosity


  • QUERY

    查询相关信息,包括计划人员查询活动。
    修改参数:systemLog.component.query.verbosity


  • REPL

    有关副本的信息,例如初始化同步和心跳消息(心跳失败)。
    修改参数:systemLog.component.replication.verbosity


  • SHARDING

     有关分片活动的信息,例如启动mongos节点。
    修改参数:systemLog.component.sharding.verbosity

  • STORAGE

     有关存储活动的信息,例如参与frsync命令处理。
    修改参数: systemLog.component.storage.verbosity

MongoDB的JOURNAL组件和STORAGE组件与众不同,无论如何,STORAGE都是JOURNAL操作的结果。
因此, systemLog.component.storage.verbosity设置unset,MongoDB使用的STORAGE详细级别JOURNAL组件。


  • JOURNAL

日志活动相关的信息。
修改参数:systemLog.component.storage.journal.verbosity

MongoDB的JOURNAL组件和STORAGE组件与众不同,无论如何,STORAGE都是JOURNAL操作的结果。因此,如果systemLog.component.storage.journal.verbosity设置unset,MongoDB使用JOURNAL存储详情更好


  • WRITE

有关写操作信息,例如update命令。
修改参数:systemLog.component.write.verbosity 


  • -
    一个未命名组件信息,未命名组件的默认日至级别需要指定“systemLog.verbosity”设置,
    该systemLog.verbosity设置为有名和无名组件的默认设置。

  1. Verbosity Levels
    查看当前日志详情级别,使用“ db.getLogComponents()”方法可以查看当前日志级别详情。
    配置日志详情: the systemLog.verbosity and systemLog.component..verbosity settings, the logComponentVerbosity parameter; the db.setLogLevel()method.
    systemLog Verbosity Settings
    使用“systemLog.verbosity ”来给所有的组件配置默认的日至级别。
    使用“systemLog.component..verbosity”来给指定的组件设置日志级别。

举例:
接下来设置
“systemLog.verbosity”为“1”
“systemLog.component.query.verbosity”为“2”
“systemLog.component.storage.verbosity”为“2”
“systemLog.component.storage.journal.verbosity ”为“1”

配置里面写法

systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1

所有的未组件指定配置使用“systemLog.verbosity”指定的1级别。


  • logComponentVerbosity 参数

“logComponentVerbosity”参数通过一个文档来修改详细的参数。

例如:
 default verbosity level to 1, the query to 2, the storage to2, and the storage.journal to 1.

use admin
db.runCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
},
storage: {
verbosity: 2,
journal: {
verbosity: 1
}
}
}
} )

  • db.setLogLevel()

使用“db.setLogLevel()”指定单独组件的日至级别,你可以指定详细情况0到5,或者指定“-1”
继承父配置。例如使用“systemLog.component.query.verbosity”继承上级配置。

db.setLogLevel(-1, "query")

取消订阅请在评论框回复你的邮箱,会自动取消订阅
微信扫描二维码了解更多 ->

[运维博客]
[运维博客](http://nginxs.blog.51cto.com/

mongodbmongodb3.2日志配置mongodb日志配置

pymongo性能测试脚本

2016/03/05 00:16 于 数据分析 0

微信 微博 豆瓣 人人

最近开始接触mongodb,顺便用python的pymongo写了一个测试性能的脚本

[root@cloud ~]# cat /home/baishaohua/mongo_test.py 
#!/usr/bin/python
import pymongo
import time,datetime

conn=pymongo.Connection('192.168.1.8',27017) #建立连接
db=conn.test #进入test库
col=db.people #进入people集合

print "Test Write==>" #开始写测试
atime=time.time() #记录开始时间戳atime
doc = { "high" : 175, "six" : "true", "phone_num" : 1222222, "name" : "str(i)" }
for i in range(1,1200000): #循环顺序写入120w次
col.insert(doc)
btime=time.time() #记录结束时间戳
print "Writeexec time:"
print btime-atime #计算执行市场

print "Test Read==>"
atime=time.time()
doc = { "name" : "str(i)" }
for i in range(1,1200000): #循环顺序读取120w次
col.find(doc)
btime=time.time()
print "Read exec time:"
print btime-atime

print "Test Delete==>"
atime=time.time()
doc = { "name" : "str(i)" }
for i in range(1,1200000): #循环顺序删除120w次
col.remove(doc)
btime=time.time()
print "Delete exec time:"
print btime-atime

微信扫描二维码了解更多 ->

[运维博客]
[运维博客](http://nginxs.blog.51cto.com/

mongodbmongodb性能测试pymongo

Mongodb WiredTiger存储引擎特性

2016/03/03 20:59 于 数据分析 0

微信 微博 豆瓣 人人

            数据库的存储引擎组件,负责管理存储在内存和硬盘上的数据。MongoDB支持多个存储引擎,为特定的工作指派合适的存储引擎为您的用例可以显著提高应用程序的性能。

  MongoDB WiredTiger存储引擎是主要的组件负责管理数据。MongoDB提供各种存储引擎,允许您选择一个最适合您的应用程序。
  
WiredTiger存储引擎是Mongodb3.0新加的,在很普通的机器上就能超过2w的写频率,并发读写比以前提高了很多,mongodb3.2默认使用这个引擎。特性:

1、只支持64位系统

并发

2、支持文档级别的并发(多用户可能同时操作同集合内不同文档)

3、对于大多数读写操作,wiredtiger优化了控制并发。它的锁包含,全局锁,数据库锁,文档级别锁。当存储引擎检查到两个操作冲突操作时,其中一个写操作会默认进行一次重试。

一些涉及到多个库的短时全局操作,任然需要一个实例级别的全局锁。例如删除一个集合,仍然需要数据库锁。

快照和检查点

   wiredtiger使用多版本并发控制(MVCC),当开始一个操作时wiredtiger会给这个事物提供一个当前时间点的数据快照,内存中的快照数据提供一个一致性视图。

当数据写入硬盘时,wiredtiger将所有的数据以快照方式写入硬盘保证数据的一致。当前持久化的文件就是一个“检查点”,这个“检查点”需要确保和最新数据的一致性,这个“检查点”也可以唤作恢复点。

WiredTiger使用写前事务日志和检查点,以确保数据持久性。即使没有日志“检查点”也可以用于恢复数据。

     即使写入新的“检查点”,之前的“检查点”依然有效,所以当mongodb终止或者在创建新的“checkport”发生错误时,重启后依然可以保留最近一次有效的“检查点”的数据,直到新的“检查点”可访问以后mongodb才会释放“旧检查点”。

MongoDB配置WiredTiger创建"检查点"(即写快照数据到磁盘)每隔60秒或2 g的journal data写到磁盘。这样就意味着

服务器突然宕机的话,这部分内存数据是会丢失的。

Journaljournal 是一个日志,在发生问题时候帮助你恢复数据。有几个可配置选项使你在平衡性能和可靠性之间调试适用于您的特定用例。
所有的“检查点”之间的修改都有日志的记录,可以通过这些记录恢复之前修改的数据到最近的检查点。
所以你会看到日志进程会频繁的把信息写到硬盘。
wiredtiger journal 默认使用快速压缩库写入。你可以修改“storage.wiredTiger.engineConfig.journalCompressor”设置。

**注意**

wiredtiger的最小日志记录是128byte,如果一条日志小于等于128byte将不记录。

如果单机的情况下,不使用journal将会意味着出现问题将会丢失一部分数据。

压缩

WiredTiger引擎支持所有的集合和索引压缩存储。这是以消耗额外的CPU为代价的来节省存储空间.
WiredTiger默认使用snappy算法压缩,也可以使用zlib。
参数介绍:
storage.wiredTiger.collectionConfig.blockCompressor”zlib算法压缩。
storage.wiredTiger.indexConfig.prefixCompression”关闭索引压缩

内存使用

mongodb WiredTiger引擎和文件都需要在内存中缓存。
在mongodb3.2中变化较大,WiredTiger使用缓存将会更多,内存使用达到“60%-1G”或者1G。
而文件缓存则使用剩余的内存或者“WiredTiger”和其它进程释放的内存。

storage.wiredTiger.engineConfig.cacheSizeGB"

微信扫描二维码了解更多 ->

[运维博客]

mongodbmongodb WiredTigerWiredTiger存储引擎

管理