MQ медленная скорость ожидания на XMITQ - PullRequest
2 голосов
/ 16 апреля 2020

Мы столкнулись с проблемой, когда скорость передачи сообщений xmitq очень низкая по сравнению с обычной производительностью. У нас есть много других Qmgrs с большими потоками MQ, которые не имеют такой же проблемы.

Наш концентратор qmgr подключается к бизнес-линии в той же компании, что и концентратор qmgr, и даже очереди назначения на их стороне являются пустыми потоком действительно медленный.

На уровне ОС и сети говорят, что ничего нельзя сделать. В MQ мы изменили размеры буфера, чтобы он соответствовал уровню ОС и использовали систему tcp windows.

Теперь на уровне MQ у нас есть настройка SDR канала с BATCHSZ до 100, но, кажется, приемник настроен с 30. Мы заметили это, потому что мы видим поток сообщений в пакетах по 30 сообщений. Также не уверен, что это связано, но мы видим, что XMITQ всегда имеет 30 незафиксированных сообщений.

Наш вопрос для совета.

Может ли увеличение параметра BATCHSZ на SDR / RCVR помочь производительности? Есть ли какой-либо другой параметр на уровне MQ, который мог бы помочь?

 DIS CHS(NAME) ALL

AMQ8417: Display Channel Status details.
 CHANNEL(QMGRA.QMGRB.T7)           CHLTYPE(SDR)
 BATCHES(234)                            BATCHSZ(30)
 BUFSRCVD(235)                           BUFSSENT(6391)
 BYTSRCVD(6996)                          BYTSSENT(14396692)
 CHSTADA(2020-04-16)                     CHSTATI(14.38.17)
 COMPHDR(NONE,NONE)                      COMPMSG(NONE,NONE)
 COMPRATE(0,0)                           COMPTIME(0,0)
 CONNAME(159.50.69.38(48702))            CURLUWID(398F3E5EEA43381C)
 CURMSGS(30)                             CURRENT
 CURSEQNO(43488865)                      EXITTIME(0,0)
 HBINT(300)                              INDOUBT(YES)
 JOBNAME(000051FC00000001)               LOCLADDR(10.185.8.122(54908))
 LONGRTS(999999999)                      LSTLUWID(398F3E5EE943381C)
 LSTMSGDA(2020-04-16)                    LSTMSGTI(14.49.46)
 LSTSEQNO(43488835)                      MCASTAT(RUNNING)
 MONCHL(HIGH)                            MSGS(6386)
 NETTIME(2789746,3087573)                NPMSPEED(NORMAL)
 RQMNAME(QMGRB)                       SHORTRTS(10)
 SSLCERTI(*******************)
 SSLKEYDA( )                             SSLKEYTI( )
 SSLPEER(*******************)
 SSLRKEYS(0)                             STATUS(RUNNING)
 STOPREQ(NO)                             SUBSTATE(RECEIVE)
 XBATCHSZ(23,7)                          XMITQ(QMGRB.X7)
 XQTIME(215757414,214033427)             RVERSION(08000008)
 RPRODUCT(MQMM)

qm.ini:

Log:
 LogPrimaryFiles=10
 LogSecondaryFiles=10
 LogFilePages=16384
 LogType=LINEAR
 LogBufferPages=4096
 LogPath=/apps/wmq/QMGR/log/QMGR/
 LogWriteIntegrity=SingleWrite
Service:
 Name=AuthorizationService
 EntryPoints=13
TCP:
 SvrSndBuffSize=0
 SvrRcvBuffSize=0 
 ServiceComponent:
 Service=AuthorizationService
 Name=MQSeries.UNIX.auth.service
 Module=/opt/mqm75/lib64/amqzfu
 ComponentDataSize=0
Channels:
 MaxChannels=500

ОБНОВЛЕНО: 15:41 GMT

Просто для обновления информация, обе стороны теперь с BATCHSZ 100 и кажется немного.

AMQ8417: Display Channel Status details.
 CHANNEL(QMGRA.QMGRB.T7)           CHLTYPE(SDR)
 BATCHES(403)                            BATCHSZ(100)
 BUFSRCVD(405)                           BUFSSENT(23525)
 BYTSRCVD(11756)                         BYTSSENT(53751066)
 CHSTADA(2020-04-17)                     CHSTATI(15.13.51)
 COMPHDR(NONE,NONE)                      COMPMSG(NONE,NONE)
 COMPRATE(0,0)                           COMPTIME(0,0)
 CONNAME(159.50.69.38(48702))            CURLUWID(6D66985E94343410)
 CURMSGS(0)                              CURRENT
 CURSEQNO(44115897)                      EXITTIME(0,0)
 HBINT(300)                              INDOUBT(NO)
 JOBNAME(0000172A00000001)               LOCLADDR(10.185.8.122(2223))
 LONGRTS(999999999)                      LSTLUWID(6D66985E93343410)
 LSTMSGDA(2020-04-17)                    LSTMSGTI(15.30.06)
 LSTSEQNO(44115897)                      MCASTAT(RUNNING)
 MONCHL(HIGH)                            MSGS(23505)
 NETTIME(101563,480206)                  NPMSPEED(NORMAL)
 RQMNAME(QMGRB)                       SHORTRTS(10)
 SSLCERTI(*************************************)
 SSLKEYDA( )                             SSLKEYTI( )
 SSLPEER(****************************)
 SSLRKEYS(0)                             STATUS(RUNNING)
 STOPREQ(NO)                             SUBSTATE(MQGET)
 XBATCHSZ(1,1)                           XMITQ(QMGRB.X7)
 XQTIME(191225,794134)                   RVERSION(08000008)
 RPRODUCT(MQMM)

AMQ8450: Display queue status details.
 QUEUE(QMGRB.X7)                      TYPE(QUEUE)
 CURDEPTH(0)                             IPPROCS(1)
 LGETDATE(2020-04-17)                    LGETTIME(15.30.06)
 LPUTDATE(2020-04-17)                    LPUTTIME(15.30.06)
 MEDIALOG(S2488154.LOG)                  MONQ(LOW)
 MSGAGE(0)                               OPPROCS(9)
 QTIME(794134, 191225)                   UNCOM(NO)

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Несколько вещей ..

  • У вас есть XBATCHSZ (1,1), поэтому ваш последний размер пакета составляет 1 сообщение на пакет.
    • Всего сообщений 23505 пакетов 403, поэтому в среднем 58 сообщений на пакет. Если ваш недавний размер пакета равен 1, то у вас должно быть несколько более крупных (100?) Размеров пакетов
  • XQTIME 191225 - это количество микросекунд, которые сообщения находились в очереди xmit перед отправкой. Это 0,1 секунды!
    • Nettime 101563 микросекунды. Это длительное время (0,1 секунды) 10 000 будет хорошим значением. Сравните это с «TCP PING»
    • BUFSSENT 23525 аналогично количеству сообщений - поэтому размер сообщения обычно не превышает 32 КБ. BytesSent. Сообщения дают 2286 таких маленьких сообщений.

Что нужно проверить

  • Очередь на удаленном конце. Это заполнено? Это может привести к тому, что очередь отправителя получит больше сообщений
  • Сетевое время кажется очень длинным. Сравните это с TCP Ping. Nettime может включать медленный ввод-вывод на удаленном конце - или очередь на удаленном конце заполнена
  • XQTIME имеет высокий уровень. Это может быть вызвано отправкой приложений без фиксации или медленным вводом-выводом на диск

Я написал «Почему моя очередь xmit заполняется» в этом блоге

чтение.

Получите эти метрики за день и посмотрите, являются ли они типичными

С уважением

Колин Пэйс

0 голосов
/ 17 апреля 2020

Я приведу несколько замечаний в этом ответе, но на основе любых дальнейших отзывов я могу добавить больше.


Вы используете очень старую версию программного обеспечения на стороне отправителя, MQ 7.5 потерял поддержку почти на два года go (30 апреля 2018 года). IBM за дополнительную плату предоставит расширенную поддержку еще на три года, поэтому, возможно, вы попадете в эту группу. Сам сервисный релиз 7.5.0.2 вышел 11 июля 2013 года, так что на данный момент ему почти семь лет. Я настоятельно рекомендую вам перейти на более новую версию.

Обратите внимание, что MQ v8.0 выходит из поддержки 30 апреля 2020 года, и IBM только что через несколько дней объявила go, что MQ v9.0 выходит из поддержка 30 сентября 2021 г. Когда вы выполняете миграцию, вам следует go с 9.1, у которой нет объявленного окончания поддержки (они дают минимум пять лет, поэтому может быть 2023), или go со следующей версией MQ, которая должна выйти когда-нибудь в этом году.


Вы упоминаете настройку следующего:

TCP:
 SvrSndBuffSize=0
 SvrRcvBuffSize=0 

Вышеуказанные настройки применяются к концу SVRCONN клиентского соединения. Это можно увидеть на странице Центра знаний MQ v7.5 WebSphere MQ> Конфигурирование> Изменение информации о конфигурации> Изменение информации о конфигурации администратора очередей> TCP, LU62, NETB IOS и SPX :

SvrSndBuffSize = 32768 | number
Размер в байтах буфера отправки TCP / IP, используемого серверной частью канала подключения к клиентскому соединению .

SvrRcvBuffSize = 32768 | number
Размер в байтах буфера приема TCP / IP, используемого серверной частью канал подключения к клиентскому соединению.

В IBM MQ v7.5.0.2 APAR IV58073 представил концепцию установки различных настроек буфера в значение 0, что означает, что это позволит использовать операционную систему по умолчанию. К сожалению, как и многие вещи в Центре знаний, похоже, что IBM не документировала это правильно для 7.5.

Однако вы можете просмотреть Центр знаний IBM MQ v8.0, чтобы получить полную картину этих настроек на странице Настройка> Изменение информации о конфигурации> Изменение информации о конфигурации администратора очередей> TCP, LU62 и NETB IOS, в частности, вы хотите настроить эти два параметра так, чтобы они влияли на ваш канал отправителя:

SndBuffSize = число | 0
Размер в байтах буфера отправки TCP / IP, используемого отправляющим концом каналов . Это значение раздела может быть переопределено разделом больше спецификаций c для типа канала, например RcvSndBuffSize. Если значение установлено равным нулю, используются значения по умолчанию операционной системы. Если значение не задано, используется значение по умолчанию IBM MQ 32768.

RcvSndBuffSize = number | 0
Размер в байтах буфера отправки TCP / IP, используемого отправителем конца канала получателя. Если значение установлено равным нулю, рабочая операция системные значения по умолчанию используются. Если значение не задано, то используется значение по умолчанию IBM MQ 32768.


Начиная с IBM MQ v8.0, любой вновь созданный администратор очередей будет иметь все перечисленные ниже значения в qm.ini:

TCP:
   SndBuffSize=0
   RcvBuffSize=0
   RcvSndBuffSize=0
   RcvRcvBuffSize=0
   ClntSndBuffSize=0
   ClntRcvBuffSize=0
   SvrSndBuffSize=0
   SvrRcvBuffSize=0

Однако любой обновленный администратор очередей по умолчанию не получит эти настройки, то есть, если они отсутствуют, они не будут добавлены, если они присутствуют, они останутся прежними. Если этот параметр отсутствует, то, как сказано выше, «по умолчанию используется IBM MQ 32768».

Я провел обширные обсуждения с поддержкой IBM по этой теме c и пришел к выводу, что они это сделали. не вижу причин, чтобы не устанавливать его на 0, они увидели только выгоду в этом, но с большой осторожностью они не меняют его на 0.

Я бы порекомендовал вам добавить все эти ваш qm.ini, но как минимум добавьте два, которые я выделил выше.

Это хорошая настройка для реализации, но она может не решить вашу проблему, если за последнее время ничего не изменилось ни с одной стороны. Однако если что-то изменилось, например, разница в сети, или MQ был обновлен до 8.0.0.8 на удаленной стороне, то этот параметр может просто решить вашу проблему.


В состоянии канала выведите два значения интересны:

  1. NETTIME(2789746,3087573)
  2. XQTIME(215757414,214033427)

NETTIME означает, что на основании недавних действий для получения ответа от оператора потребовалось 2,7 секунды Канал RCVR, в течение более длительного периода времени требовалось 3,1 секунды для получения ответа от канала RCVR. Можете ли вы сравнить это с пингом TCP от сервера канала отправителя к серверу принимающего канала, 2,7 секунды для ответа по сети кажется чрезмерным. В презентации Поддержание и работа каналов MQ, представленной на технической конференции Capitalware MQ v2.0.1.4 , Пол Кларк, который раньше работал в IBM, заявляет: «NETTIME измеряет только сетевое время и не включает MQCMIT для пример ".

XQTIME означает, что, основываясь на недавней активности и в течение более длительного периода времени, сообщение на XMITQ было получено каналом SDR для отправки.

См. Ниже, как IBM документирует это:

NETTIME
Количество времени, отображаемое в микросекундах, для отправки запроса на удаленный конец канала и получения ответ. Это время измеряет только сетевое время для такой операции. Отображаются два значения:

  • Значение, основанное на недавней активности за короткий период.
  • Значение, основанное на активности за более длительный период.

XQTIME
Время в микросекундах, в течение которого сообщения оставались в очереди на передачу до получения. Время измеряется с момента, когда сообщение помещается в очередь передачи, до его извлечения для отправки по каналу и, следовательно, включает любой интервал, вызванный задержкой в ​​приложении для размещения.
Отображаются два значения:

  • Значение, основанное на недавней активности за короткий период.
  • Значение, основанное на активности за более длительный период.

Информация параметр канала BATCHSZ можно найти на странице Центра знаний IBM MQ v8.0 Справочник> Ссылка на конфигурацию> Атрибуты канала> Атрибуты канала в алфавитном порядке> Размер пакета (BATCHSZ) . Я процитировал его и выделил несколько областей полужирным шрифтом .

Этот атрибут - максимальное количество сообщений, которые должны быть отправлены до получения точки syn c.

Размер пакета не влияет на то, как канал передает сообщения; сообщения всегда передаются по отдельности, но принимаются или возвращаются в виде пакета.

Чтобы повысить производительность, вы можете установить размер пакета, чтобы определить максимальное количество сообщений, передаваемых между двумя точками синхронизации c. Размер пакета, который будет использоваться, согласовывается при запуске канала, и берется меньшее из двух определений канала. В некоторых реализациях размер пакета рассчитывается по наименьшему из двух определений канала и двум Диспетчер очереди значений MAXUMSGS. Фактический размер партии может быть меньше; например, пакет завершается, когда в очереди на передачу не осталось сообщений или истекает интервал между пакетами.

Большое значение для размера пакета увеличивает пропускную способность, но время восстановления увеличивается, поскольку существует больше сообщения для возврата и повторной отправки. По умолчанию BATCHSZ равен 50, и вам рекомендуется сначала попробовать это значение. Вы можете выбрать более низкое значение для BATCHSZ, если ваши сообщения ненадежны, что повышает вероятность восстановления.

Этот атрибут действителен для типов каналов:

  • Отправитель
  • Сервер
  • Получатель
  • Запрашивающий
  • Отправитель кластера
  • Кластерный приемник

Ответы на вопросы:

  1. Являются ли сообщения, отправленные на этот XMITQ, постоянными?
    Ответ: Да , в нашей PROD env все сообщения являются непоследовательными.
  2. Был ли у вас недавний рост объема при переходе на этот XMITQ?
    Ответ: Нет, мы используем инструменты мониторинга, мы извлекли отчет, который показывает очень похожие частота сообщений в течение периода. Тот же показатель за последние 2 недели.
  3. Устанавливаются ли приложения для установки MQPMO_SYNCPOINT, а затем фиксируются после того, как 1 или более сообщений помещаются в очередь?
    Ответ: Я проверю с командой приложения.
...