Масштабирование вне 16 параллельных connetions

Я только что принял базу данных Postgres 9.0, работающую на RHEL 6.1 на довольно раскормленных 256 ядрах, системе на 2 ТБ с хорошо диском (аппаратные средства RAID 50).

Я начал сравнивать системы с помощью pgbench, таким образом, я могу понять то, что может сделать эта вещь. Приложение тратит большинство своих данных чтения времени, таким образом, я использовал простой 'выбор' bgbench тесты со следующими параметрами против набора данных, инициализированного с масштабным коэффициентом 300:

pgbench -S -j 8 -T 60

Я записал TPS, о котором сообщают от pgbench, использующего n+8 (n = от 0 до 16) клиенты для 16 образцов. Я произвел следующую диаграмму из результатов:

pgbench Results

Мой вопрос, почему пик при 16 параллельных соединениях? Я выполнил pgbench от того же хоста и посмотрел на IO, память, загрузку ЦП, всех обычных подозреваемых и не нашел ничего, что выделилось как являющийся причиной. Для postgresql.conf у меня есть следующие настройки:

max_connections = 1024
shared_buffers = 16G
temp_buffers = 2G
work_mem =128M
maint_work_mem = 1G

%iowait составляет ~3.8% w/16 соединений, w/32 на 8,2% и w/48 на 8,9%.

Я недавно видел, что PG 9.2 имеет новую 'функцию' (http://www.postgresql.org/about/featurematrix/detail/218/), маркированный как 'Масштабируемость многоядерных систем для рабочих нагрузок только для чтения, но это походит на отвлекающий маневр. Я не могу не думать это проблема конфигурации.

TIA.

2
08.01.2020, 00:25
2 ответа

Прежде, чем провести намного больше времени на нем, обновите до 9,2. Новые версии только выпущены для ударов, они имеют тенденцию содержать значительную производительность, настройку и улучшения масштабируемости. Довольно большая работа была сделана на чтении - и масштабирование записи недавно.

Ниже max_connections. Даже неиспользованные записи в max_connections имейте стоимость. На Вашей машине Вы, вероятно, захотите истратить где-нибудь приблизительно 300. Если Вы нуждаетесь в большем количестве параллельных соединений, помещаете a pgbouncer перед PostgreSQL.

Не упустите известные проблемы с NUMA и прозрачными огромными страницами в ядре Linux; существуют некоторые симпатичные pathalogical взаимодействия с PostgreSQL. У меня нет деталей сразу для вручения, но это несколько раз обсуждалось в списках рассылки. Некоторые люди в команде, с которой я работаю, делают большую работу с большими системами NUMA и находят, что обработка Linux огромных страниц и миграция страницы области, которые требуют настройки для приемлемой работы Pg.

На 9.0 Вашем shared_buffers могло бы быть немного большим; можно на самом деле видеть лучшие результаты путем понижения его. Необходимо будет играть вокруг с этим, поскольку это варьируется немного на основе ядра и аппаратных средств.

Наконец, удостоверьтесь, что Вы выполняете pgbench от отдельного хоста, или он создаст конкуренцию для тех же ресурсов, что он пытается сравнить.

Набор effective_cache_size приблизительно к 1 ТБ. Это должно быть выше, но IIRC, там некоторые ограничения в коде для обработки количеств мультитерабайта RAM, по крайней мере, в 9.

Если тот RAID 50 состоит из вращающейся ржавчины, это собирается ограничить производительность, если Ваш DB не помещается в RAM - который это, вероятно, делает в масштабном коэффициенте 300, но не мог бы на своем реальном DB.

3
22.02.2020, 23:06
  • 1
    Спасибо за Ваши предложения Craig. Я буду читать о NUMA, наполняют и вносят другие изменения для наблюдения, каковы дельты. –   24.07.2013, 15:30

Я досмотрел масштабирующиеся диаграммы до конца вне 16 ядер, например, этого от Robert Hass или этого на serverfault.

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

Я рекомендовал бы проверить архивы списка рассылки на postgresql.org и подписаться на список рассылки производительности. Существуют люди там, которые могут дать Вам подробный совет относительно масштабирования для больших платформ.

2
22.02.2020, 23:06
  • 1
    Да, я запустил на страницах Robert Hass. Я надеялся сделать что-то подобное, хотя он выдерживает сравнение 9.1 с 9,2 на 64 базовых машинах. Я должен верить 9.0, не может быть то, что далеко позади на большем поле. Спасибо за информацию –   23.07.2013, 22:55
  • 2
    , О, я не разыскал Вас, были на 9,0. Это не выходит на более высокий уровень до сих пор. Вид аппаратных средств, которые Вы используете просто, не был доступен, когда это создавалось и тестировалось. Почему тратят все эти деньги на дорогой сервер и торчат из программного обеспечения даты на нем? –   24.07.2013, 02:31
  • 3
    Это аппаратное и программное обеспечение предшествует мне на этом проекте. Я пытаюсь установить сравнительные тесты перед обновлением. На основе того, что я считал, хотя, 9.2 далеко за пределами 9,0 wrt производительности. Мы делаем много ближайших соседних поисков GIS и дополнения на одних только индексах KNN достаточно, чтобы мы обновили. Я просто хочу удостовериться, что то, что я испытываю, или не ожидается с 9,0. Я нахожу ту кривую производительности довольно нечетной. –   24.07.2013, 15:27

Теги

Похожие вопросы