Ограничение загрузки процессора
Ограничение загрузки процессора
Всем доброго времени суток!
Имею следующую проблему:Есть база данных, к которой подключается ~40 чоловек. Где-то половина из них это операторы, которые принимают заказы по телефону и вводят данные в базу. Вторая половина редактированием и в водом данных занимается в меньшей степени, но любит периодически снимать всякого рода отчеты и т.п., что может приводить практически к 100% загрузке процессора и вызывать тем самым торможение в работе (а с ним и жуткое) первой половины. Вопрос, можно ли как-то ограничить ресурсы процессора, выделяемые на выполнения запроса, чтобы операторы, вводящие данные не очень сильно мучались? Или какие еще могут быть варианты создание условий, чтобы не страдал ввод данных и можно было снимать отчеты?
Использую FireBird 1.0 на Win2000Srv. Программа написана на Delphi7 с использованием компонент доступа IBX
С уваженим, Денис.
Имею следующую проблему:Есть база данных, к которой подключается ~40 чоловек. Где-то половина из них это операторы, которые принимают заказы по телефону и вводят данные в базу. Вторая половина редактированием и в водом данных занимается в меньшей степени, но любит периодически снимать всякого рода отчеты и т.п., что может приводить практически к 100% загрузке процессора и вызывать тем самым торможение в работе (а с ним и жуткое) первой половины. Вопрос, можно ли как-то ограничить ресурсы процессора, выделяемые на выполнения запроса, чтобы операторы, вводящие данные не очень сильно мучались? Или какие еще могут быть варианты создание условий, чтобы не страдал ввод данных и можно было снимать отчеты?
Использую FireBird 1.0 на Win2000Srv. Программа написана на Delphi7 с использованием компонент доступа IBX
С уваженим, Денис.
Сменить ориентацию с SuperServer на Classic. Почитать на www.ibase.ru про разницу между ними, заценить необходимый объём RAM, возможно придётся увеличить. По моей практике, 1 гиг для беспроблемной работы в таких условиях понадобится и его скорее всего хватит. Проверить на реальной нагрузке. Если положительный эффект окажется недостаточным, поставить перед руководством вопрос о переходе на двухпроцессорное железо (для Super не имеет никакого смысла).
Мы через это проходили. Действительно, после перехода на FireBird 1.5.2 CS проблема была снята. Хотел бы поделиться еще одним наблюдением. При использовании CS на двухпроцессрном сервере мы наблюдали практически равномерную загрузку процессоров. При проверке тех же режимов работы с SS второй процессор по нашим наблюдениям также брал на себя часть нагрузки, хотя и меньшую, чем в CS. Ранее, при работе в FireBird 1.0.2 у нас совершенно точно грузился только один процессор. Может ли кто сказать, это корректное наблюдение, или мы где-то не то посмотрели.Merlin писал(а):Сменить ориентацию с SuperServer на Classic. Почитать на www.ibase.ru про разницу между ними, заценить необходимый объём RAM, возможно придётся увеличить. По моей практике, 1 гиг для беспроблемной работы в таких условиях понадобится и его скорее всего хватит. Проверить на реальной нагрузке. Если положительный эффект окажется недостаточным, поставить перед руководством вопрос о переходе на двухпроцессорное железо (для Super не имеет никакого смысла).
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Как раз все хорошо согласуется с теорией
потом обратно... и так много раз в секунду 

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


Re: Ограничение загрузки процессора
Про переход на cs ты уже в курсе.Denis писал(а):Вопрос, можно ли как-то ограничить ресурсы процессора, выделяемые на выполнения запроса, чтобы операторы, вводящие данные не очень сильно мучались?
Когда мы работали на ss, часто применяли следующий трюк. Особопрожерливые запросы ”загоняли” в ХП, если запускать эти ХП в “чистом виде”, то, естественно, наблюдалась постоянная 100%-ая загрузка процессора, при этом другие пользователи нервно курили. Так вот, стали в таких ХП вставлять вызов udf-ки, которая состоит только из вызова sleep(0), при этом загрузка процессора при выполнении этой ХП "дергается" от 60 до 90%, сама ХП выполняется чуть подольше, но другие пользователи чувствуют себя значительно легче. Попробуй, может в твоем случае поможет.
Пользуясь ХП можно попробовать извратиться и задействовать генераторы в качестве флажка останова этой самой ХП.Denis писал(а):Или какие еще могут быть варианты создание условий, чтобы не страдал ввод данных и можно было снимать отчеты?
В общем, вместе с переходом на CS получился и переход на двухпроцессорное железо. Получилось очень даже неплохо. "Подвисания" вроде как прекратились. Всем большое спасибо за советы. А насчет ограничения процессорного времени, выделяемого на выполнение запроса, я так понял, что никак нельзя. Ну, или почти никак

С уважением, Денис.

Это я тоже попробую, т.к. остались некоторые операции, которые пытаются грузить, теперь уже 2 процессора, до 100%Когда мы работали на ss, часто применяли следующий трюк. Особопрожерливые запросы ”загоняли” в ХП, если запускать эти ХП в “чистом виде”, то, естественно, наблюдалась постоянная 100%-ая загрузка процессора, при этом другие пользователи нервно курили. Так вот, стали в таких ХП вставлять вызов udf-ки, которая состоит только из вызова sleep(0), при этом загрузка процессора при выполнении этой ХП "дергается" от 60 до 90%, сама ХП выполняется чуть подольше, но другие пользователи чувствуют себя значительно легче. Попробуй, может в твоем случае поможет.

С уважением, Денис.
-
- Сообщения: 31
- Зарегистрирован: 27 окт 2004, 11:56
Снявши голову, по волосам не плачут.Denis писал(а):Это я тоже попробую, т.к. остались некоторые операции, которые пытаются грузить, теперь уже 2 процессора, до 100%
С уважением, Денис.
В том смысле, что ежели серверу нужно M секунд на отработку конкретного запроса, то ограничивать его в этом потреблении ресурса процессора - лишь затягивать процесс. Перешел на классик - и ОСь уже прилично разруливает долгоиграющие процессы, более равномерно распределяя между ними процессорный ресурс. Перешел на двухголовый сервер - увеличил в два раза процессорный ресурс. Чего тебе еще надобно, старче?
Дальнейшие улучшения - только через оптимизацию кода.