0

mongo と sys-ng を使用してログを保存します

ログは毎秒約20000行です

私はmongos でmongo whit 2shardと3を実行していますhost

私はpythonスクリプトを書きますipython

In [48]: %time dddd=[qlogdb.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'})  for i in range(100000)]
CPU times: user 7.24 s, sys: 2.51 s, total: 9.75 s
Wall time: 10.77 s  

出力ログから1秒前に10000行書けると思います

にデータを挿入するときの書き込み速度を改善する必要がありますmongo

データを挿入するときに複数のプロセスを使用してみたいmongo

しかし、書き込み速度が向上するかどうかはわかりません;</p>

とりあえず ?

4

1 に答える 1

2

毎秒 100,000 回の書き込みが必要で、データの読み取りに関する要件はありません。

  • 特定の時間しきい値までにデータが一貫している必要はありません。
  • 信頼性の要件はありません。つまり、N 台のサーバーがクラッシュしたためにデータが失われても気にしません。また、書き込みが成功したかどうかをライターが知る必要もありません。

そうは言っても、私が持っているアドバイスは2つあります。

  1. RAIDを使用して I/O ボトルネックを軽減します。たとえば、RAID 0 です。これは、負荷が I/O バウンドであることを前提としています。ただし、すべてのディクショナリを作成するために必要な作業のため、ベンチマークはわずかに CPU を集中的に使用します。

  2. バッチ挿入を使用します。

    In [1]: %time return_value = [collection.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'})  for i in xrange(100000)]
    CPU times: user 7.00 s, sys: 0.85 s, total: 7.85 s
    Wall time: 7.86 s
    
    In [2]: %time return_value = [collection.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'})  for i in xrange(100000)]
    CPU times: user 6.79 s, sys: 0.84 s, total: 7.63 s
    Wall time: 7.64 s
    
    In [3]: documents = [{'tet':1313232,'test':1232423,'asdasds':'sdadsds'} for i in xrange(100000)]
    In [10]: %time return_value = collection.insert(documents)
    CPU times: user 0.97 s, sys: 0.03 s, total: 0.99 s
    Wall time: 1.00 s
    
    In [4]: documents = [{'tet':1313232,'test':1232423,'asdasds':'sdadsds'} for i in xrange(100000)]
    In [10]: %time return_value = collection.insert(documents)
    CPU times: user 0.92 s, sys: 0.04 s, total: 0.96 s
    Wall time: 0.98 s
    

あなたのrange電話をに置き換えたことに注意してくださいxrange

もちろん、要件も読んでいる場合は、およびパラメータに関してpymongo collection.insertドキュメントを参照する必要があります。フリーランチ等はありません。safew

お役に立てれば!

于 2012-07-19T11:07:08.950 に答える