Azure文件串联被永久卡住,基础进程进入睡眠状态

时间:2018-08-29 05:30:47

标签: linux rest azure-data-lake epoll strace

这是我通过使用打字稿请求承诺模块发出rest调用在Azure存储上用于文件级联的代码。

一些其他数字:在1500次运行中有1次显示此行为

public async concatFile(clientId: string, clientSecret: string, yourStoreName: string, yourDirName: string,
    destinationFile: string, projectId: string, sourceFile: string, environment: string) {
    await this.getAzureToken(clientId, clientSecret).then(async (resolve) => {

        await request(
            {
                headers: {
                    Authorization: "Bearer " + resolve,
                    Connection: "keep-alive",
                },
                json: true,
                method: "POST",
                url: "https://" + yourStoreName + ".azuredatalakestore.net/webhdfs/v1/" +
                    yourDirName + "/" + environment + "/" + "ChangeSummary" + "/" + projectId + "/" + destinationFile +
                    "?op=CONCAT&sources=/" +
                    yourDirName + "/" + environment + "/" + "ChangeSummary" + "/" + projectId + "/" + sourceFile,

            }, function callback(error) {
                if (error) {
                    console.log(error);
                } else {
                    console.log("successfull concat");
                }
            },
        );
    });
}

连接保持“保持活动状态”,以便在多次调用中都不会完成TCP握手。另外,由于我们希望依赖默认超时,因此未添加任何明确的超时。

我正在经历的行为是当这段代码发出一个rest调用时,它将永远等待,并且没有超时发生。另外,当我向后看时,即使用top命令检查进程状态时,我观察到它们处于睡眠状态(S),这是由于我的猜测是由于I / O操作造成的。

Image

让我知道是否有任何解决方法,特别是在明确设置超时方面。

干杯

+一些新发现

我在此过程中发出了strace命令,并且看到了以下输出

root@d2599a0b42b986911caf834360d48796b33a2c1e-n9r8s:/app# strace -p 1
Process 1 attached
epoll_wait(5,

正在等待此系统调用来显示此过程。

0 个答案:

没有答案