1

我在 Tomcat 7 上运行一个应用程序,在虚拟机上运行,​​仅用于一个目的:分发照片。

初始化应用程序时,它与 MongoDB 连接,如下所示:

//Create mongo reference
Mongo mongo = new Mongo(new MongoURI(url));

然后我将参考保存在内存中并像这样搜索照片:

//Update R/W Strategy
dbManager.setMongoReadWritePreferences(mongo, app);

//Use database dbname
DB db = mongo.getDB(dbname);

try {           
    db.requestStart();
    db.requestEnsureConnection();

    //Open gridFS connection
    GridFS fs = new GridFS(db, GlobalConfig.GRIDFS_COLLECTION_BUCKET_BLOBS);

    GridFSDBFile photos = fs.findOne(filename);
    log.debug("[+]"+photos);

    if (photos == null){
        throw new Exception("[PHOTO_NOT_FOUND]");
    } else {
        return photos.getInputStream();
    }

} finally {
    //Request is finished
    db.requestDone();
}

它工作得很好。(在 70GB 的照片集上,任何照片大约需要 35 毫秒

我最近开始遇到无法返回照片的问题,并且我的监控图上有奇怪的峰值:

线程数 每分钟请求数 与此同时 每分钟字节数

流量不是很高,但它一直在做奇怪的事情,随机发送空照片。

任何人都知道它可能是什么?

4

0 回答 0