是七牛服务器不稳定还是我程序有问题?间歇性超时

程序上传文件很慢,有时候成功,有时候出错:

{
  "error": {
    "stack": "Error: read ETIMEDOUT\n    at errnoException (net.js:901:11)\n    at TCP.onread (net.js:556:19)",
    "message": "read ETIMEDOUT",
    "code": -1,
    "errno": "ETIMEDOUT",
    "syscall": "read",
    "name": "RequestError"
  }
}

nodejs程序代码:

Uploader.uploadBody = function(uptoken, container, body, callback) {

    qiniu.conf.ACCESS_KEY = config.storage.service.accessKey;
    qiniu.conf.SECRET_KEY = config.storage.service.secretKey;

    var extra = new qiniu.io.PutExtra();
    //extra.params = params;
    //extra.mimeType = mimeType;
    //extra.crc32 = crc32;
    //extra.checkCrc = checkCrc;

    var key = null;

    qiniu.io.put(uptoken, key, body, extra, function(err, ret) {
        if (err) {
            logger.error('文件上传到七牛失败!');
            logger.error(err);
            callback(err);
        } else {

            // 上传成功, 处理返回值
            console.log(ret);
            // ret.key & ret.hash
            callback(null, ret);
        }
    });
}
阅读 4.8k
2 个回答

如果上传大文件,容易上传失败的话,您可以考虑一下分片上传,就是把一个大文件根据设定的尺寸分成快,然后分片上传支持断点续传,有人做了一个js的案例,您可以看下!http://7niu.sinaapp.com/,js的源代码http://7niu.sinaapp.com/qiniu.uploader.js?id=12,分片上传的上传失败率极低,但是就是业务逻辑有点复杂

如果只是查询数据库就遇到了这个问题呢?

app-0 { [Error: select * from "table_a" limit $1 - read ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' }
app-1 { [Error: select "table_b".* from "table_b" - read ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进