zoukankan      html  css  js  c++  java
  • mongodb同步ElasticSearch性能测试脚本记录

    一、逐条写入性能测试脚本

    [root@wlan-cloudserver8 bin]# ./mongo 172.27.8.118:40000

      SHARDING_2:PRIMARY> use admin
      switched to db admin
      SHARDING_2:PRIMARY> db.auth('wlan','wlan')

      SHARDING_2:PRIMARY> use estestdbnew

      switched to db estestdbnew

    SHARDING_2:PRIMARY> for(var i=0;i<1000;i++){db.estestdbnew.insert({name:"new", age:999})}


    二、通过命令行批量写入性能测试脚本

    var bulk = db.test.initializeUnorderedBulkOp();
    for(var i=0;i<100000;i++){bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } )} ---写入十万条
    bulk.execute();

    三、通过代码批量写入性能测试脚本

    package mongodbtest;
    
    import java.io.IOException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class BulkWriting
    {
    
        public static void main(String[] args) throws IOException, ParseException
        {
    
            MongoDBConnector mongoDBConnector = new MongoDBConnector("admin", "admin", "estestdbnew", "172.27.8.110", 27017,
                    "test");
    
            mongoDBConnector.connect();
    
            // mongoDBConnector.insertone();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
    
            System.out.println("start:" + sdf.format(new Date()));
            mongoDBConnector.bulkwirte();
            System.out.println("finish:" + sdf.format(new Date()));
        }
    }
    package mongodbtest;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bson.Document;
    import org.bson.conversions.Bson;
    
    import com.mongodb.MongoClient;
    import com.mongodb.MongoCredential;
    import com.mongodb.ReadPreference;
    import com.mongodb.ServerAddress;
    import com.mongodb.bulk.BulkWriteResult;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.InsertOneModel;
    import com.mongodb.client.model.WriteModel;
    
    public class MongoDBConnector
    {
        private String                        mongodbUserName;
        private String                        mongodbPassWord;
        private String                        mongodbDBName;
        private String                        mongodbServerAddr;
        private int                            mongodbServerport;
        private String                        mongodbCollection;
        private MongoClient                    mongoClient;
        private MongoCollection<Document>    collection;
    
        public MongoDBConnector(String mongodbUserName, String mongodbPassWord, String mongodbDBName,
                String mongodbServerAddr, int mongodbServerport, String mongodbCollection)
        {
            this.mongodbUserName = mongodbUserName;
            this.mongodbPassWord = mongodbPassWord;
            this.mongodbDBName = mongodbDBName;
            this.mongodbServerAddr = mongodbServerAddr;
            this.mongodbServerport = mongodbServerport;
            this.mongodbCollection = mongodbCollection;
        }
    
        public void connect()
        {
            ServerAddress serverAddress = new ServerAddress(this.mongodbServerAddr, this.mongodbServerport);
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();
            addrs.add(serverAddress);
    
            MongoCredential credential = MongoCredential.createScramSha1Credential(this.mongodbUserName, this.mongodbDBName,
                    this.mongodbPassWord.toCharArray());
    
            List<MongoCredential> credentials = new ArrayList<MongoCredential>();
            credentials.add(credential);
    
            MongoClient mongoClient = new MongoClient(addrs, credentials);
            this.mongoClient = mongoClient;
    
            MongoDatabase mongoDatabase = mongoClient.getDatabase(this.mongodbDBName)
                    .withReadPreference(ReadPreference.secondary());
            MongoCollection<Document> collection = mongoDatabase.getCollection(this.mongodbCollection);
            this.collection = collection;
            return;
        }
    
        public MongoCursor<Document> find(Bson filter)
        {
            FindIterable<Document> findIterable = this.collection.find(filter);// .batchSize(100000);
            MongoCursor<Document> mongoCursor = findIterable.iterator();
    
            return mongoCursor;
        }
    
        public void insertone()
        {
            Document document = new Document("x", 1);
            collection.insertOne(document);
            document.append("x", 2).append("y", 3);
            System.out.println("insert one document has finished!");
        }
    
        public void bulkwirte()
        {
            List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
            for (int i = 100000; i < 300000; i++)
            {
                writes.add(new InsertOneModel<Document>(
                        new Document("_id", i).append("char", "Taeln").append("class", "fighter").append("lvl", 4)));
            }
    
            BulkWriteResult bulkWriteResult = collection.bulkWrite(writes);
            System.out.println(bulkWriteResult);
        }
    
        public void close()
        {
            this.mongoClient.close();
            return;
        }
    }
    View Code

    测试结果:

    start:2016-11-22 11:49:50.771
    AcknowledgedBulkWriteResult{insertedCount=200000, matchedCount=0, removedCount=0, modifiedCount=0, upserts=[]}
    finish:2016-11-22 11:50:25.201

    观察ES,大概在mongodb写完3分钟后才完全同步过去

    [root@master ~]# curl '172.27.8.132:9200/_cat/indices?v'
    health status index                   pri rep docs.count docs.deleted store.size pri.store.size 
    green  open   estestdb                  5   1      27826            0     11.6mb          5.8mb 
    green  open   logstash-2015.05.20       5   1       4750            0     35.9mb         17.9mb 
    green  open   mongodb_meta              5   1     327826            0     56.2mb         28.1mb 
    green  open   .marvel-es-1-2016.11.22   1   1      34554           96     33.8mb         16.9mb 
    green  open   .marvel-es-1-2016.11.21   1   1     211946          564    203.8mb        101.8mb 
    green  open   .marvel-es-1-2016.11.20   1   1     204352          740    201.5mb        100.7mb 
    green  open   bank                      5   1       1000            0    885.2kb        442.6kb 
    green  open   .kibana                   1   1          5            0     51.7kb         25.8kb 
    green  open   .marvel-es-data-1         1   1         20            4      7.4mb          3.7mb 
    green  open   .marvel-es-1-2016.11.19   1   1     195921          728    191.4mb         95.7mb 
    green  open   .marvel-es-1-2016.11.18   1   1     179399          534    167.2mb         83.6mb 
    green  open   .marvel-es-1-2016.11.17   1   1      97604          228     77.9mb         38.9mb 
    green  open   shakespeare               5   1     111396            0     37.3mb         18.6mb 
    green  open   estestdbnew               5   1     300000            0      9.3mb          4.6mb 
    green  open   logstash-2015.05.18       5   1       4631            0     34.6mb         17.3mb 
    green  open   logstash-2015.05.19       5   1       4624            0     34.9mb         17.4mb
  • 相关阅读:
    ImageLightbox.js – 响应式的图片 Lightbox 插件
    精美素材:10套最新出炉的免费扁平图标下载
    盘点2013年那些最优秀的网页设计作品【系列三】
    12个带给你惊喜用户体验的手机界面设计
    一款效果精致的 jQuery 多层滑出菜单插件
    创意无限:20幅惊人的霓虹灯摄影照片欣赏
    『设计前沿』14款精致的国外 iOS7 图标设计示例
    2013年值得我们学习的网页设计作品【系列二】
    Summernote – 基于 Bootstrap 的文本编辑器
    『摄影欣赏』2013年微软必应搜索十大首页美图
  • 原文地址:https://www.cnblogs.com/zhengchunhao/p/6088439.html
Copyright © 2011-2022 走看看