Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: Помогите с подбором процессора для сервера  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Даниил,

ужас!!! Если реально добавление одного заказа занимает 6 секунд всю эту фигню надо срочно переписать. Оно должно длится не более одной десятой секунды.
Название таблиц TABLE_N просто умиляет. Это ORM что ли?
15 мар 19, 08:39    [21833260]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Даниил,

вам надо оперативной памяти нарастить и увеличить размер страничного кеша для начала, но не более чем до 2048 страниц (это для классика).

Перейдёте на 3.0 SS там можно кеш задрать посущественней. У вас там на вставку одного заказа только 97 067 дисковых чтений!!!
15 мар 19, 08:43    [21833265]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
Симонов Денис
Даниил,

ужас!!! Если реально добавление одного заказа занимает 6 секунд всю эту фигню надо срочно переписать. Оно должно длится не более одной десятой секунды.
Название таблиц TABLE_N просто умиляет. Это ORM что ли?
Нет, в реальности названия таблиц вполне осмысленные. В статистике подчистил на всякий случай.
15 мар 19, 08:48    [21833270]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
Симонов Денис
У вас там на вставку одного заказа только 97 067 дисковых чтений!!!
Для каждой позиции подтягивается свой прайс, где цена рассчитывается по нескольким параметрам (в т.ч. агрегациям по 2 немаленьким таблицам) и подтягиваются правила добавления для каждой позиции (у разной добавляемой позиции может быть различный механизм добавления сопутствующих параметров в одну/несколько таблиц (разные сущности).
Про оптимизацию понял. Пересмотрю, что можно переделать на хранимые агрегации и число чтений уменьшить.
15 мар 19, 08:59    [21833278]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1642
Симонов Денис
вам надо оперативной памяти нарастить и увеличить размер страничного кеша для начала, но не более чем до 2048 страниц (это для классика).

все равно не поможет, если 1.5 гига с диска поднимается
15 мар 19, 09:19    [21833291]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
Dimitry Sibiryakov
Даниил
Кроме оптимизации DDL и запросов с клиентов где по вашему мнению у меня прям ужас ужасный?

2. Неспособность выяснить чем занят процессор когда он занят.

Можете подсказать, каким инструментом это можно посмотреть? Я могу посмотреть только имя и ID процесса и не понимаю как это можно использовать.
15 мар 19, 09:22    [21833296]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Даниил
Для каждой позиции подтягивается свой прайс, где цена рассчитывается по нескольким параметрам (в т.ч. агрегациям по 2 немаленьким таблицам) и подтягиваются правила добавления для каждой позиции (у разной добавляемой позиции может быть различный механизм добавления сопутствующих параметров в одну/несколько таблиц (разные сущности).
Про оптимизацию понял. Пересмотрю, что можно переделать на хранимые агрегации и число чтений уменьшить.


Вот с этого и надо начинать. Агрегировать каждый раз при добавлении позиции это онанизм какой-то. Во-первых прайсы так обычно не пересчитывают, хотя бы потому что плавающая цена в течении дня это не очень хорошо. Я не знаю что там у вас за бизнес правила, но скажу что делал я одного оптовика фарм препаратов. У них розничный прайс пересчитывается на оприходовании, а оптовый раз в неделю.
15 мар 19, 09:37    [21833305]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
tunknown
Member

Откуда:
Сообщений: 678
Даниил
Обычный компьютер
Если не экономить на комплектующих, то сервер не всегда обязателен.

Даниил
16 Гб ОЗУ Занятая память: 5-8Гб
Мало. Ради дискового кеша нужно больше.

Даниил
/ БД на быстром SSD /
Ширпотребный SSD не для сервера. Enterprise SSD (SLC/MLC) имеют большую цену, а ширпотребные TLC/MLC- мусор с заранее неизвестным качеством и сроком жизни. Особенно, с OLTP нагрузкой. К тому же, один ширпотребный SSD плохо держит параллельную нагрузку. Лучше аппаратная плата RAID1 на 2 HDD или RAID10 на 4. Тогда будет до 4 потоков на чтение и до двух на запись. Винчестеры лучше выбирать классом повыше.

Даниил
Win7
Если настроить и поотключать всё лишнее, то это лучше ненужного сервера. При таких объёмах серверная операционная система- лишняя трата денег на ненужный функционал.

Даниил
Нагрузка на HDD и LAN - минимальная: HDD в пике 20 МБ/с, обычно 0-4 МБ/с; LAN в пике 40 МБит/с, обычно 2-10 МБит/с.
Сетевую карту лучше поставить отдельную, встроенный Realtek слабоват. Он имеет бОльшие буфера для входящего трафика- нужно наоборот. На отдельной сетевой карте увеличить исходящие буфера до максимума.

Даниил
В итоге видимое узкое место - это процессор.
Так всегда кажется, но чаще всего узким местом является программный стек.

Даниил
При пиковой нагрузке, когда около 60-80 операторов создают новые заявки (1 заявка - это INSERT по 20-100 записей в 5-10 таблиц огромного размера + привязанная в этому бизнес-логика на 15-20 триггеров и около 20-30 ХП, меняющих еще 10-15 таблиц) и эта заявка сохраняется (в толстом клиенте, но вся бизнес-логика выполняется на стороне сервера) до 5-7 секунд. Это много. Считаю нормой - максимум 2 секунды.
Количество залогиненных пользователей не так важно. Нужно смотреть на количество одновременно выполняющихся запросов за одну секунду. Оно не должно быть существенно больше количества ядер процессора. Пики возможны, но не должны быть длительными.

Даниил
Кроме этого у пользователей есть достаточно сложные отчеты, которые могут формироваться до 1-2 минут.
Нельзя ли настроить репликацию или что-то подобное на отдельный компьютер? OLTP и отчётная (или OLAP) нагрузки плохо совместимы, начиная с определённого уровня. Отчёты можно держать на readonly базе, если софт умеет- иногда это улучшает производительность.

Даниил
Поскольку процессор на обычном бытовом компьютере апгредить уже нет смысла, то пора переходить на серверное железо
Смысл зависит от многого. Если дадут денег, то можно. Однако, серверное железо и софт будут существенно дороже. Нужно много вложить, чтобы получить сходную производительность. Серверное железо не для производительности, а для большего количества обслуживаемых клиентов и "гарантированной" безотказности.


Даниил
(не исключая оптимизации DDL и запросов).
В первую очередь. Может, не понадобится сервер.

Даниил
1) Даст ли ощутимый прирост производительности переход на процессоры Xeon Gen9 или Gen10 Silver c 16 ядрами но частотой 2.1-2.4ГГц (вместо i7 8 ядер 3.4ГГц) или же требуется увеличить кол-во ядер при сохранении примерно той же частоты что у i7 3-4 ГГц?
Смотрите на число одновременно выполняющихся запросов.

Плюсы серверного процессора: ядер больше, кеш больше. Минусы: частота либо существенно меньше, либо несущественно, но с огромным ценником и кондиционированная серверная нужна- шумит и греется. Обычно, для серверов и память медленная, но чуть надёжнее.
Если в базе много алгоритмической работы, то может требоваться большая частота. Мощные десктопные процессоры в некоторых случаях лучше:

Если одновременных запросов меньше, то предпочтительнее частота:
i7-7700k
i7-7740x

Если одновременных запросов больше, то предпочтительнее греющиеся ядра и L2 кеш:
i7-7820x
i7-9800x
15 мар 19, 10:33    [21833382]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

Даниил
Можете подсказать, каким инструментом это можно посмотреть?

WinDbg, Process Explorer.

Posted via ActualForum NNTP Server 1.5

15 мар 19, 12:45    [21833613]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
tunknown
Member

Откуда:
Сообщений: 678
Dimitry Sibiryakov
WinDbg, Process Explorer.

Видимо, Process Monitor, т.к. нужно в динамике?
15 мар 19, 12:48    [21833617]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

tunknown
Видимо, Process Monitor
Нет, монитор годится для выяснения "чем занят диск/сеть/реестр". Для процессора
нужны стэки нагруженных потоков из эксплорера или отладчика.

Posted via ActualForum NNTP Server 1.5

15 мар 19, 12:51    [21833628]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 871
Дегтярев Евгений
DmSer
Откуда такая нагрузка на SSD, если вся база закеширована в памяти?

откуда она там возьмется
kdv
DefaultDbCachePages = 384
маловато как-то.


База в ОЗУ в файловом кэше ОС.
15 мар 19, 13:12    [21833686]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Дегтярев Евгений
Симонов Денис
вам надо оперативной памяти нарастить и увеличить размер страничного кеша для начала, но не более чем до 2048 страниц (это для классика).

все равно не поможет, если 1.5 гига с диска поднимается


ну может хоть верхние уровни индексов оставаться будут
15 мар 19, 13:17    [21833700]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
Симонов Денис
Даниил
Для каждой позиции подтягивается свой прайс, где цена рассчитывается по нескольким параметрам (в т.ч. агрегациям по 2 немаленьким таблицам) и подтягиваются правила добавления для каждой позиции (у разной добавляемой позиции может быть различный механизм добавления сопутствующих параметров в одну/несколько таблиц (разные сущности).
Про оптимизацию понял. Пересмотрю, что можно переделать на хранимые агрегации и число чтений уменьшить.


Вот с этого и надо начинать. Агрегировать каждый раз при добавлении позиции это онанизм какой-то. Во-первых прайсы так обычно не пересчитывают, хотя бы потому что плавающая цена в течении дня это не очень хорошо. Я не знаю что там у вас за бизнес правила, но скажу что делал я одного оптовика фарм препаратов. У них розничный прайс пересчитывается на оприходовании, а оптовый раз в неделю.

Цена на 1 позицию берется из прайса клиента на определенную дату, далее высчитывается скидка на эту позицию (по своему алгоритму выдачи возможной скидки на каждую из позиций) исходя из общей накопленной суммы за незакрытый период (месяц) и сравнивается, укладывается ли вся ненакопленная сумма незакрытого периода в ограничение по клиенту и далее ветки действий по каждому возможному случаю. Все это должно быть "онлайн" без дискретных периодов пересчета (день-неделя-месяц).
15 мар 19, 13:21    [21833711]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8347
tunknown
Лучше аппаратная плата RAID1 на 2 HDD или RAID10 на 4. Тогда будет до 4 потоков на чтение и до двух на запись. Винчестеры лучше выбирать классом повыше.

Даниил
На механических винчестерах оно будет тупить настолько безбожно, что можно даже не начинать. HDD это опечатка?


Даниил
каким инструментом это можно посмотреть?
Смотреть надо на вкладку "перфонанс аналитика" а эксперте. Не забивай голову всякой хренью тпа "чем занят проц" и так ясно, что он агрегирует данные и это надо вынести в хранимый агрегат и подновлять его в фоне. Немного нивелировать проблему может помочь переход на 3 ss и разгон закэшированных страниц до примерно половины ОЗУ. Добавление памяти до 64 гб (в десктоп врядли влезет больше), когда не хватит 64 купите полноценную серверную железку.

Отдельно ПРОЦ менять нет НИКАКОГО смысла. Из того, что можно сделать быстро, это сгонять в магазин и купить 4 планки по 16 гиг. Если бы была маркировка матплаты можно было сказать точнее.
15 мар 19, 14:47    [21833919]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
tunknown
Даниил
16 Гб ОЗУ Занятая память: 5-8Гб
Мало. Ради дискового кеша нужно больше.

Есть смысл стремится к тому, чтобы весь объем БД влезал в ОЗУ?

tunknown
Даниил
/ БД на быстром SSD /
Ширпотребный SSD не для сервера. Enterprise SSD (SLC/MLC) имеют большую цену, а ширпотребные TLC/MLC- мусор с заранее неизвестным качеством и сроком жизни. Особенно, с OLTP нагрузкой. К тому же, один ширпотребный SSD плохо держит параллельную нагрузку. Лучше аппаратная плата RAID1 на 2 HDD или RAID10 на 4. Тогда будет до 4 потоков на чтение и до двух на запись. Винчестеры лучше выбирать классом повыше.

Сейчас мы меняем SSD планово раз в год. Но сейчас под БД заготовлен нормальный RAID с батарейкой на 5 дисках. Проводил замеры скорости пока просто копированием файла - примерно одинаково (SSD = RAID). Как будет при реальной нагрузке пока не знаю.


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

Как это посмотреть? Посчитать по MON$TRANSACTIONS? Но там только активные будут.

tunknown
Даниил
Кроме этого у пользователей есть достаточно сложные отчеты, которые могут формироваться до 1-2 минут.
Нельзя ли настроить репликацию или что-то подобное на отдельный компьютер? OLTP и отчётная (или OLAP) нагрузки плохо совместимы, начиная с определённого уровня. Отчёты можно держать на readonly базе, если софт умеет- иногда это улучшает производительность.
Репликацию силами самого Firebird это можно будет сделать только в 4й версии сервера?

tunknown
Даниил
Поскольку процессор на обычном бытовом компьютере апгредить уже нет смысла, то пора переходить на серверное железо
Смысл зависит от многого. Если дадут денег, то можно. Однако, серверное железо и софт будут существенно дороже. Нужно много вложить, чтобы получить сходную производительность. Серверное железо не для производительности, а для большего количества обслуживаемых клиентов и "гарантированной" безотказности.
Т.е. для 100-150 клиентов покупать серверный xeon на более десятка ядер при нормально спроектированной и оптимизированной БД не имеет смысла?

tunknown
Даниил
(не исключая оптимизации DDL и запросов).
В первую очередь. Может, не понадобится сервер.
Да, до меня это уже дошло.

Даниил
1) Даст ли ощутимый прирост производительности переход на процессоры Xeon Gen9 или Gen10 Silver c 16 ядрами но частотой 2.1-2.4ГГц (вместо i7 8 ядер 3.4ГГц) или же требуется увеличить кол-во ядер при сохранении примерно той же частоты что у i7 3-4 ГГц?
Смотрите на число одновременно выполняющихся запросов.
Про процессоры понял. Серверная есть и она более-менее нормально устроена.
15 мар 19, 15:46    [21833992]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
tunknown
Member

Откуда:
Сообщений: 678
Ivan_Pisarevsky
На механических винчестерах оно будет тупить настолько безбожно, что можно даже не начинать. HDD это опечатка?
Зависит от нагрузки. Если отдаётся много мелких непоследовательных наборов данных, то RAID 10/4 HDD не будет быстрее. Если отдаются большие последовательные данные, то 4 медленных потока могут стать лучше одного быстрого. Запись тоже имеет свои особенности. Не учитывая этого можно вынести бюджет TBW за месяц.

Но держать OLTP базу на SSD- это либо нонсенс, либо предмет гордости администратора, что у него все процессы не хуже Tier 3 и есть горячий резерв с гарантированным простоем не больше минут.
15 мар 19, 15:54    [21834005]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1031
Ivan_Pisarevsky
На механических винчестерах оно будет тупить настолько безбожно, что можно даже не начинать.
Я уже почти собрался менять SSD на RAID5 или RAID10 на механических HDD (есть в наличии, на другом мало используемом сервере). Раньше все такие рейды были, чем плохи?
Лучше по вашему выбрать вариант RAID на SSD?
15 мар 19, 15:58    [21834010]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

15.03.2019 15:58, Даниил пишет:
> Лучше по вашему выбрать вариант RAID на SSD?

денех не хватит.

Posted via ActualForum NNTP Server 1.5

15 мар 19, 16:02    [21834014]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Даниил
Т.е. для 100-150 клиентов покупать серверный xeon на более десятка ядер при нормально спроектированной и оптимизированной БД не имеет смысла?


Имеет. Но если только купить новый сервер и ничего не переделывать результат может разочаровать. Ожидание всё должно работать в 5 раз быстрее, на деле оказывается в 2. А сервер то дорогой.
15 мар 19, 16:05    [21834017]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
tunknown
Member

Откуда:
Сообщений: 678
Даниил
Есть смысл стремится к тому, чтобы весь объем БД влезал в ОЗУ?
Не уверен, что используемая версия СУБД имеет собственное полноценное кеширование, как ведёт себя ОС- отдельный вопрос. Всегда существуют части, котором обязательно нужно сбросится на диск. И размер данных не всегда позволяет.

Даниил
Как это посмотреть? Посчитать по MON$TRANSACTIONS? Но там только активные будут.
Что-то подобное fbprofiler, вероятно, будет полезным.

Даниил
Т.е. для 100-150 клиентов покупать серверный xeon на более десятка ядер при нормально спроектированной и оптимизированной БД не имеет смысла?
Если количество одновременных запросов превышает в полтора раза количество ядер под СУБД более 2-3% рабочего времени или это происходит подряд или попадает на какое-нибудь закрытие смены, то проблему придётся решать. Сервер на нескольких W-3175X- это самое дешёвое решение в смысле усилий программиста.

Например, если при открытии документа на редактирование тянется куча редкоизменяемых справочников и эти справочники обновляются не их основными потребителями, то их можно положить на отдельный компьютер под репликацией. Пусть приложение ходит на 2 сервера. Или кешировать в локальный, например, sqlite. Тем более, что софт самописный.
15 мар 19, 16:21    [21834032]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

15.03.2019 16:21, tunknown пишет:
> то их можно положить на отдельный компьютер под репликацией.

вася, шел бы ты отсюда...

Posted via ActualForum NNTP Server 1.5

15 мар 19, 16:23    [21834036]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
tunknown
Member

Откуда:
Сообщений: 678
Даниил
RAID5
Лучше не стоит. Зеркала или RAID 10 вполне достаточно.
Даниил
Лучше по вашему выбрать вариант RAID на SSD?
И будут они жить долго и счастливо, пока не умрут в один день или раньше, от кривизны в прошивке. Или придётся следить за графиком ротации, следить за деградацией и подтягивать процессы к Tier 3.
15 мар 19, 16:25    [21834042]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8347
Даниил
Т.е. для 100-150 клиентов покупать серверный xeon на более десятка ядер при нормально спроектированной и оптимизированной БД не имеет смысла?
Серверное железо это не только "дорого" и "много ядер/памяти", это еще и мониторинг, ЕСС память, ипми, сдвоенные БП и т.п.
Даниил
Я уже почти собрался менять SSD на RAID5 или RAID10 на механических HDD (есть в наличии, на другом мало используемом сервере). Раньше все такие рейды были, чем плохи?
механический диск выдает на гора примерно 100 операций в секунду, если повезет до 200. тем и плохи рэйди старые они медленные, посмотри сколько ты ты уже укушал иопсов и сравни с чиселкой 100. Да рэйд за счет кэширования в самом контроллере может выдавать куда интересней циферки, но как только пошел обмен именно с блинами, а не с ТББУ то см. выше про 100.
tunknown
Но держать OLTP базу на SSD- это либо нонсенс
так и запишем - теоретег.
Даниил
Лучше по вашему выбрать вариант RAID на SSD?
мы сейчас упаковали свои серверы интеловыми ссдшками 4610 в зеркало+хотспар на адптеке получилось вполне себе шустро.
15 мар 19, 16:50    [21834084]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с подбором процессора для сервера  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8347
tunknown
И будут они жить долго и счастливо, пока не умрут в один день или раньше, от кривизны в прошивке.
прислать наложенным платежом дюжину-другую дохлых ХДД? диски что хдд, что ссд это расходный материал, да за ними надо планово следить и планово заменять.
15 мар 19, 16:53    [21834086]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить