Как устранить ошибку Aerospike, операция не разрешена в это время? - PullRequest
1 голос
/ 28 января 2020

Я использую Aerospike 4.8v и сохраняю свои данные на диске, и я делаю параллельные запросы на запись в aerospike, если я делаю 10 параллельных запросов, то это работает нормально, но когда я делаю 100 параллельных запросов, это дает ошибку, т.е. операция не разрешена в на этот раз с кодом 22. Я думаю, что аэроспайк должен быть способен обрабатывать сотни или тысячи запросов параллельно, но я не знаю, что не так, поэтому, если кто-нибудь может помочь, это будет полезно.

Журнал ошибок:

 error : { AerospikeError: Operation not allowed at this time.
    at Function.fromASError (/data/codebase/lib/node_modules/aerospike/lib/error.js:113:21)
    at QueryCommand.convertError (/data/codebase/lib/node_modules/aerospike/lib/commands/command.js:91:27)
    at QueryCommand.convertResponse (/data/codebase/lib/node_modules/aerospike/lib/commands/command.js:101:24)
    at asCallback (/data/codebase/lib/node_modules/aerospike/lib/commands/command.js:163:24)
  name: 'AerospikeError',
  code: 22,
  command:
   QueryCommand {
     client:
      Client {
        domain: null,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        config: [Object],
        as_client: AerospikeClient {},
        connected: true,
        captureStackTraces: false },
     args: [ 'antiSpamming', 'userTargetingMatrix', [Object], undefined ],
     captureStackTraces: false,
     key: undefined,
     ensureConnected: true,
     stream:
      RecordStream {
        aborted: false,
        client: [Object],
        _events: [Object],
        _eventsCount: 3 } },
  func: 'as_query_parse_records_async',
  file: 'src/main/aerospike/aerospike_query.c',
  line: 246,
  inDoubt: false }

Журналы предупреждений:

Jan 28 06:03:25 ip-1-0-4-78 asd[32437]: Jan 28 2020 06:03:25 GMT: WARNING (scan): (scan_manager.c:103) at scan threads limit - can't start new scan
Jan 28 06:03:25 ip-1-0-4-78 asd[32437]: Jan 28 2020 06:03:25 GMT: WARNING (scan): (scan.c:676) basic scan job 5614303283813349397 failed to start (22)

1 Ответ

2 голосов
/ 28 января 2020

Скорее всего, вы превысили ограничение по умолчанию для запросов. Сначала просмотрите определение для код ошибки 22 * ​​1002 *:

Для сканирований с сервером 4.7 или новее нет доступных потоков (scan-threads-limit достигнута).

Исходя из вашего другого вопроса , вы выполняете сканирование, а не запрос с вторичным индексом . Вам нужно будет увеличить этот лимит, как указано в «Дополнительная информация». Однако у вас довольно слабая система с точки зрения ЦП, поэтому вы должны отрегулировать это значение и эталонный тест, сравнивая производительность до и после с одинаковой рабочей нагрузкой. В реальной производственной системе у вас будет несколько узлов, возможно, вам потребуется более двух ядер ЦП, и вы также будете настраивать потоки сканирования по мере необходимости.

...