LoginSignup
0
0

More than 5 years have passed since last update.

リモートサーバーに mongoDB を置いてみた

Posted at

今のところ、いろんなアプリケーションが混在するサーバーに mongoDB を置いているのだが、そうすると、各種パラメータ等の設定が面倒(こっちを立てるとあっちが立たない、みたいな感じになりがち)なので、mongoDB をリモートのサーバーに置いて、そこにデータを登録するようにしてみた。

システム構成

(mongoDBサーバー)

  • CPU Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz HyperThread OFF
  • MEMORY 20 GB
  • LAN 100Mbps
  • DISK WDC WD5000BPVT-00HXZT1 500GB
  • クライアントとはスイッチングハブを介して接続

mongoDB バージョン

3.0.4

データ登録

mongo shell から insert コマンドでデータを登録する。
 insert ドキュメントを配列としてバルクサイズを変えて、ネットワーク転送量をメインに確認した。

サンプルDML

(hoge.sql)
for(i=0;i<100000;i++){
    db.test.insert([{"header":{"time":1,"offset":9,"host":"host0001","item":"item0001"},"data":[{"parameter":"parameter0001","value":1.1},{"parameter":"parameter0002","value":2.2},{"parameter":"parameter0003","value":3.3}]},{"header":{"time":1,"offset":9,"host":"host0001","item":"item0001"},"data":[{"parameter":"parameter0001","value":1.1},{"parameter":"parameter0002","value":2.2},{"parameter":"parameter0003","value":3.3}]}...])}

(mongo shell)
\> mongo 192.168.1.1:27017 < hoge.sql

ドキュメントサイズ

> db.test.stats()
{
    "ns" : "test.test",
    "count" : 10000,
    "size" : 2700000,
    "avgObjSize" : 270,
    "storageSize" : 356352,
    "capped" : false,
...

コマンド実行ホストからmongoDBホストへのping

  • ドキュメントサイズに TCP のヘッダ分(20bytes)を加えて 290 bytes を設定

    ping -s 290 -c 100 192.168.1.1
    PING 192.168.1.1 (192.168.1.1) 290(318) bytes of data.
    298 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.836 ms
    ...
    --- 192.168.1.1 ping statistics ---
    100 packets transmitted, 100 received, 0% packet loss, time 99001ms
    rtt min/avg/max/mdev = 0.374/0.533/0.836/0.056 ms

結果

バルクサイズ ネットワーク転送率 関連情報
1 313.6Kバイト/sec
2 462.0Kバイト/sec
4 547.9Kバイト/sec
8 965.5Kバイト/sec
16 1.1Mバイト/sec
32 1.3Mバイト/sec
64 1.8Mバイト/sec このあたりから vmstat で block I/O 待ちが起こった
128 2.3Mバイト/sec
256 2.7Mバイト/sec
  • CPU, MEMORY, I/O についてはパフォーマンス的に特に問題はなかった

気付き

*リモートサーバーへのアクセス、それも、シングルでのインサートを考える
時は、ネットワーク性能がそれなりによくないときつい。

バルクインサートで極力パケットを詰め込んでネットワーク性能を引き出すのがベターなのはわかったのだが、それにしても ping 結果と比べて 1 insert 時のパフォーマンスがあまりに悪すぎる、ような気がする。

もう少し踏み込んで確認してみようと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0