首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >国际航空公司查询中的断管错误

国际航空公司查询中的断管错误
EN

Stack Overflow用户
提问于 2018-04-11 10:34:48
回答 1查看 627关注 0票数 2

当我在aql终端上运行"select * from test.demo“时,我有名称空间"test”并设置了"demo“,我得到了这个错误。到底是什么导致管道破裂?

我在下面的服务器日志中收到了警告消息。

我的aerospike.conf是:

代码语言:javascript
复制
service {
    paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.
    proto-fd-max 15000
}

logging {
    file /var/log/aerospike/aerospike.log {
            context any info
    }
}

network {
    service {
            address any
            port 3000
    }

    heartbeat {
            mode multicast
            multicast-group 239.1.99.222
            port 9918

            # To use unicast-mesh heartbeats, remove the 3 lines above, and see
            # aerospike_mesh.conf for alternative.

            interval 150
            timeout 10
    }

    fabric {
            port 3001
    }

    info {
            port 3003
    }
}

namespace test {
    replication-factor 2
    memory-size 4G
    default-ttl 30d # 30 days, use 0 to never expire/evict.

    storage-engine memory
}
namespace bar {
    replication-factor 2
    memory-size 4G
    default-ttl 30d # 30 days, use 0 to never expire/evict.

    storage-engine memory

    # To use file storage backing, comment out the line above and use the
    # following lines instead.
    #       storage-engine device {
    #               file /opt/aerospike/data/bar.dat
    #               filesize 16G
    #               data-in-memory true # Store data in memory in addition to file.
    #       }
}

有人能找出原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 20:59:07

当试图将扫描结果发送到客户端已经超时的套接字时,我认为您收到了套接字错误。

代码语言:javascript
复制
Error: (-10) Socket read error: 11, [::1]:3000, 36006

默认情况下,aql超时设置为1000 is。

使用-T命令行选项,它最多可以跳到100000ms。(或在aql交互模式中使用set超时)

代码语言:javascript
复制
aql -T 100000

-T, --timeout <ms> Set the timeout (ms) for commands. Default: 1000此选项等效于在其他客户上设置TotalTimeout。

将超时值设置得更高会有所帮助,但不能回答为什么基本扫描要花费这么长时间。

下面是一个设置不同客户端超时的示例,这显示了客户端在接收扫描结果之前进行超时的情况。在日志中,您将看到用于扫描的TCP发送错误。

代码语言:javascript
复制
WARNING (proto): (proto.c:693) send error - fd 32 Broken pipe

来自aql控制台的详细信息:

代码语言:javascript
复制
aql> set timeout 10
TIMEOUT = 10
aql> select * from test.demo
Error: (-10) Socket read error: 11, 127.0.0.1:3000, 58496

aql> select * from test.demo
Error: (-10) Socket read error: 115, 127.0.0.1:3000, 58498


aql> set timeout 100
TIMEOUT = 100
aql> select * from test.demo
Error: (-10) Socket read error: 115, 127.0.0.1:3000, 58492

aql> set timeout 1000
TIMEOUT = 1000
aql> select * from test.demo
+-----+-------+
| foo | bar   |
+-----+-------+
| 123 | "abc" |
+-----+-------+
1 row in set (0.341 secs)

这仍然是一个谜,为什么您的aql客户端会超时返回1记录,如果默认超时保持在1000 at。你有没有修改过超时。或者在带有空集的测试命名空间中拥有大量记录。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49772814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档