Опять про производительность под Win2003

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Опять про производительность под Win2003

Сообщение Ovosh » 11 мар 2006, 16:43

Доброе время!
Сталкнулся с такой проблемой: нужно было сделать программу на заказ. База 170 Мб, FB 1.5. Дома на ноутбуке WinXP , cpu 2 Ггц, 512 RAM, время выполнения N минут. Клиент выполнял на сервере: 2-Xeon 2.8, RAID5 SCSI, 2 ГГб, Win2003 - время выполнения 7*N минут. При анализе выяснилось, что стоит SuperServer (переход на классик не приемлем), fbserver.exe загружает проц в среднем на 1-2 процента. Общая загрузка 17-19 процентов, на серваке больше ничего не крутится. ФС - NTFS. Посоветовал админу выставить CpuAffinityMask = 1 и ProcessPriorityLevel = 2. Скорость выполнения увеличилась, но явно недостаточно (4*N). C Win2003 никогда дел не имел, поэтому прошу посоветовать как повысить производительность сервера? Может дело в настройках ОС? Спс.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 мар 2006, 01:26

что именно выполняется N минут, хотя бы примерно?
какой размер кэша установлен в конфиге FB на твоей машине и на сервере?

судя по загрузке сервера в 17-19%, если у тебя загрузка выше - есть проблема с драйверами RAID. То есть, не смотря на RAID5, по какой-то причине он ужасно тормозит.
Рекомендую посмотреть размер блока RAID, размер кластера NTFS на том диске, где БД, и размер страницы БД. Эти три значения желательно иметь идентичными, в районе 4 или 8 килобайт.

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Сообщение Ovosh » 12 мар 2006, 16:05

После дополнительной инвестигации с моим участием выяснилось, что узкое место RAID. "Средняя длина очереди диска" сильно зашкаливает, следующем шагом выяснилось, что база лежит на системном диске. Перенос базы на другой диск (физ), дало значительный прирост производительности. Теперь время выполнения примерно сравнялось, но на сервере все равно чуть больше. Имеет ли смысл копать дальше или значительного прироста достичь не удасться? Что касается действий, то это пробег по всем записям базы A и поиск соответсвий в базе B , при нахождении записать данные в базу C (так заказали). Спасибо за помощь.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 мар 2006, 18:01

думаю, копать дальше смысл имеет, т.к. "идентичность" по производительности сервера и раб. станции не идет ни в какие ворота.

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 13 мар 2006, 08:20

база-то всего 170 мег, ее ж лехко и просто можно всю запихать в кэш, учитывая, что на сервере 2 гига памяти.
Насколько интенсивно в базу пишут? Если пишут очень много, то совет насчет кэша может оказаться вредным...

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Сообщение Ovosh » 13 мар 2006, 18:08

Терь пусть админы ковыряются :lol:
Кстати, еще одна тема вроде как замыленная про "Русские буквы".
Пытаюсь выполнить скрипт на добавление записей, через isql, под WinXP все отлично, под Win2K и Win2003 - хрен! Вроде кодировки везде правильные, что за фикня? Пришлось в скрипте явно прописывать _win1251 (не сложно конечно, но интересно ж).

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 мар 2006, 22:20

1. база должна быть создана с кодировкой win1251
2. в скрипте перед коннектом должно быть написано set names win1251
3. от операционки это никак не зависит
4. проверь наличие подкаталога intl, и в нем файла fbintl.dll

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Сообщение Ovosh » 14 мар 2006, 11:59

Для эксперемента, выполнить такой скрипт:
e:\creation.sql
------
SET SQL DIALECT 3;
SET NAMES WIN1251;
CREATE DATABASE 'E:\TEST_RUS.GDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;
CREATE TABLE TABLE1 (
ID INTEGER,
NAME VARCHAR(70) CHARACTER SET WIN1251 COLLATE WIN1251
);
INSERT INTO TABLE1 (ID, NAME) VALUES (1, 'ТРАЛЯЛЯ');
COMMIT WORK;
-------
..bin\isql.exe -i e:\creation.sql -m -o e:\isql.log

Под XP все пузырится, 2К и Win2003 выдаст ошибку! Что в XP кодировка русских букв в файлах интерпритируется правильно или что?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 мар 2006, 17:17

ты гонишь. иначе как бы я под W2K работал, со всеми версиями IB/FB/YA.

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Сообщение Ovosh » 14 мар 2006, 18:44

А ты делал, как я написал? Мож я че-нить не так пишу? Я проверял, на w2k данный листинг не проходит (в части добавления записи)!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 мар 2006, 19:40

сделал все так, как ты предложил - твой скрипт буква в букву.
FB 1.5.2, SS. Windows 2000 Prof, SP4, английская, с русской дефолтной страницей (1251).
База создалась, ошибок нет. Открываем базу, в таблице TABLE1
строка "ТРАЛЯЛЯ".

p.s. если базу создал в win1251, писать чарсет у столбцов, идентичный win1251, не надо - они и так будут 1251 по умолчанию.
Кроме того, collate win1251 у чарсета win1251 тоже умолчательный, поэтому не нужен. В любом случае я выполнял твой скрипт, скопированный из текста твоего письма. Даже с учетом того, что у меня тоже есть диск E: :-)

и кстати, после создания таблицы, перед вставкой данных, COMMIT нужен ОБЯЗАТЕЛЬНО.
То есть, если бы скрипт писал я, то я бы написал:

Код: Выделить всё

SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE 'E:\TEST_RUS.GDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;

CREATE TABLE TABLE1 (
ID INTEGER,
NAME VARCHAR(70));

COMMIT WORK;

INSERT INTO TABLE1 (ID, NAME) VALUES (1, 'ТРАЛЯЛЯ');

COMMIT WORK;

Ovosh
Сообщения: 8
Зарегистрирован: 11 мар 2006, 16:10

Сообщение Ovosh » 15 мар 2006, 10:23

ГЫ, век живи - век учись!! Сам виноват, пересмотрел еще раз рабочий скрипт и выснил, что SET NAMES WIN1251 забыл поставить! Тогда появляется утверждение - под WinXP записи, содержащие русские буквы добавляются, если опущен SET NAMES WIN1251, под Win2K и Win2003 этот фокус не проходит. :!:

druff
Сообщения: 3
Зарегистрирован: 05 июл 2006, 10:45

Сообщение druff » 05 июл 2006, 10:49

Добрый день!

У наших заказчиков похожая проблема. После переноса базы на новый сервер (Вин2003, Файрбёрд 1.5.3, RAID контроллер из двух винтов, 2ГБ RAM) с гораздо более скромного по характеристикам старого (700МГц Пень, но тоже с рэйдом) существенно (более чем в 2 раза) замедлилась скорость работы. Процессор даже в самых трудоёмких задачах простаивает (не более 15% загрузки). В чём может быть дело, посоветуйте пожалуйста! С Вин2003 сталкиваюсь впервые, заказчик тоже - опыта её настройки почти никакого.

База пока маленькая - примерно 600 МБайт, включен Forced Writes.
И ещё одна особенность - Бэкап/Рестор проходит быстрее чем на старом сервере (и процессоры загружены гораздо больше - до 70%)

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 05 июл 2006, 12:08

2 druff. Попробуй отключить FW. Какой размер кластера раздела и страницы базы данных?
У нас на Win2003/FB 1.0/SCSI RAID 5 при FW тормоза получались (обращение к дискам было практически постоянно). Но это наверно вина программистов. А больше никаких нареканий к Win2003 нет.
P.S. Прямо хоть FAQ по настройке Win2003 делай...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 июл 2006, 12:36

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 05 июл 2006, 12:59

В принципе, я могу завтра поэкспериментировать у себя на работе, благо конфигурация подходящая. Помнится, после установки сервера мерил скорость массива при помощи AIDA - чтение порядка 70 мб/сек. Мне показалось, что это как-то мало, но не придал этому значения.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 июл 2006, 13:07

я могу завтра поэкспериментировать
зер гут. правда, особо сильно экспериментировать не надо, меня бы лично устроила информация по настройкам кэша диска, если такую обнаружишь.
По скорости-то сейчас диски в принципе любые (и SATA) дают 60-70 мегабайт в секунду...

druff
Сообщения: 3
Зарегистрирован: 05 июл 2006, 10:45

Сообщение druff » 06 июл 2006, 01:31

CyberMax писал(а):2 druff. Попробуй отключить FW. Какой размер кластера раздела и страницы базы данных?
У нас на Win2003/FB 1.0/SCSI RAID 5 при FW тормоза получались (обращение к дискам было практически постоянно). Но это наверно вина программистов. А больше никаких нареканий к Win2003 нет.
P.S. Прямо хоть FAQ по настройке Win2003 делай...
размер страницы/кластера - 2048/8192

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 06 июл 2006, 01:42

druff писал(а):размер страницы/кластера - 2048/8192
Почему размер страницы такой маленький??? Сколько уже писали, что как минимум - 4096 байт.
Делай b/r с page size = 8192 (чтобы был под размер кластера) и напиши результат.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 06 июл 2006, 03:25

Как таковые эксперименты над массивом проводить не стал, но в результате изучения различной информации были сделаны следующие выводы:
1. Надо обязательно проверить параметры RAID-массива.
В моем случае получилась следующая ситуация: сервер покупали у K-Systems. Они сами все настраивали, в том числе и RAID. Сегодня посмотрел, что они там сделали и удивился. Массив работатает со следующими параметрами - Read Normal, Write Thru и Direct I/O. Это самый медленный режим работы! Надо использовать Read Ahead, Write Back и Cached I/O, дающие максимальную производительность. Вот здесь описано тестирование используемого у нас контроллера (LSI Logic 320-1).
2. Скорость чтения/записи при отключенном FW особо не влияет на производительность во время штатной работы - только при начале работы с базой, когда идет активное заполнение системного кэша.
3. Есть параметры RAID: stripe size и segment size ("представляет собой размер данных, который будет прочитан или написан за одну операцию").
5. Проблемы с производительностью под Windows 2003 возможно из-за какой-то недонастройки. Либо базы либо самой ОС либо дисковой подсистемы, а не из-за того, что она сама какая-то особенная.

P.S. В ближайшее время планировую переустановку Windows 2003. Если интересует, могу сделать статью по используемым настройкам (от начала и до конца).

Ответить