у меня есть пространство имен "test" и установлено "demo" когда я запускаю "select * from test.demo" в терминале aql, я получаю эту ошибку. Что именно вызывает поломку трубы?
и я получил предупреждающее сообщение в журнале сервера ниже.
а мой aerospike.conf:
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.
# }
}
кто-нибудь может выяснить причину?
Может быть, что-нибудь интересное в логах сервера?
@ Meher , привет, Meher, я только что получил предупреждение в журналах сервера, как показано ниже. 12 апреля 2018 г., 06:07:58 GMT: WARNING (proto): (proto.c: 693) ошибка отправки - fd 29 Broken pipe
Какой тайм-аут установлен в aql?
@ Darian.miao, возможно ли, что в вашем пространстве имен есть много записей, с которыми не связан какой-либо набор? Это замедлит сканирование, которое вы выполняете, а затем приведет к тайм-ауту клиента. Но если у вас действительно есть только эти 2 записи в этих 2 наборах, тогда я не уверен, что может быть причиной этого ... можете ли вы показать общее количество записей, которые у вас есть в пространстве имен?
Я думаю, вы получаете ошибку сокета при попытке отправить результат сканирования на сокет, для которого уже истекло время ожидания на стороне клиента.
Error: (-10) Socket read error: 11, [::1]:3000, 36006
По умолчанию тайм-аут aql установлен на 1000 мс.
Его можно увеличить до 100000 мс с помощью параметра командной строки -T. (или используя установленный тайм-аут в интерактивном режиме aql)
aql -T 100000
-T, --timeout <ms> Set the timeout (ms) for commands. Default: 1000
Эта опция эквивалентна установке TotalTimeout на другие клиенты.
Установка более высокого тайм-аута должна помочь, но не отвечает на вопрос, почему базовое сканирование займет так много времени.
Вот пример с настройкой разных тайм-аутов клиентов, он показывает тайм-аут клиентов до получения результата сканирования. В журналах вы увидите ошибку отправки TCP для сканирования.
WARNING (proto): (proto.c:693) send error - fd 32 Broken pipe
Подробности из консоли aql:
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 мс. Вы случайно не изменили тайм-аут. Или иметь огромное количество записей в пространстве имен test с нулевыми наборами.
AQL - это интерактивное приложение C. Тайм-аут AQL предназначен только для ограничения вывода AQL, если вы выполните «select * ...» для огромного набора данных. Я бы подумал, что изменение тайм-аута не решит эту проблему ... но давайте посмотрим.
aql использует клиент C. Ошибка -10 в клиенте C: AEROSPIKE_ERR_CONNECTION Ошибка синхронного подключения. Ошибка чтения сокета 11: ресурс временно недоступен - интересно, почему это происходит.