我在 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 毫秒)
我最近开始遇到无法返回照片的问题,并且我的监控图上有奇怪的峰值:
流量不是很高,但它一直在做奇怪的事情,随机发送空照片。
任何人都知道它可能是什么?