powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Медленная работа функции LoadBlobFromFile
25 сообщений из 26, страница 1 из 2
Медленная работа функции LoadBlobFromFile
    #39535937
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Скачал UDF с сайта Ibase.ru библиотеку с данной функцией (спасибо KDV). Функции зарегистрировал, все работает. Но!
Имеем два сервера:
Сервер 1:
Intel(R) Xeon(R) CPUE31240 3.3GHz, 8 ядер
16Гб, рэйд 1
Вин-сервер 2008, 64 бита.

Сервер 2 (по сути и не сервер, обычный рабочий комп).
Intel(R) Core(TM) I5-3470 3.2GHz, 4 ядра.
8Гб, система Win7, 64 бита на SSD, сервер FB на обычном диске.

Везде FB2.5.7, 32 бита, только что выкачанный с официального сайта.

На сервере 1 функция работает гораздо медленнее. Сравнивался запрос из описания к библиотеке вида
Код: plsql
1.
2.
3.
update b
set b=LoadBlobFromFile('c:\1.txt')
where id = 1


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Performance info ------
Prepare time = 0ms
Execute time = 1m 31s 167ms
Current memory = 9 821 152
Max memory = 9 851 552
Memory buffers = 2 048
Reads from disk to cache = 9
Writes from cache to disk = 8 600
Fetches from cache = 30 893



Это для одного файла в 42Мб. Аналогичный файл на сервере 2 затягивается в базу за 2с.
Обычные файловые операции - копирование, чтение и т.п. на сервере 1 выполняются нормально, процессор не загружен.
Обычным образом (через IBExpert, вьювер блобов) блобы подгружаются практически мгновенно.
Пробовал на всех версиях сервера - 32 бита, классик, суперклассик, суперсервер. Разницы нет - все одинаково долго выполняется. На сервере 2 все одинаково быстро. Все тесты выполнялись локально, так что сеть ни при чем. Но при тестах по сети (например, от сервера 1 запрос к серверу 2 и, наоборот - от сервера 2 к серверу 1, все естественно тоже самое - первый случай долго выполняется, второй очень быстро - сеть загружается почти на все 100Мбит).
К базам во время теста никто не подключен кроме SYSDBA.
Вроде в UDF функции тормозить-то нечему, но и на железо грешить тоже не получается. Кривые руки тоже просто некуда приложить было.
Куда надо копать? какую статистику смотреть почему так получается? Заранее спасибо.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39535951
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбург,

проверяйте настройки кеширования raid.
Прогоните любой тест с random writes, тот же crystal например.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536011
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,
Спасибо. Похоже действительно дело в рэйде.
Подцепил обычный внешний диск к серверу 1, скопировал туда базу. Тот же самый запрос на той же архитектуре, том же файле.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Performance info ------
Prepare time = 62ms
Execute time = 15s 741ms
Current memory = 9 482 148
Max memory = 9 498 260
Memory buffers = 2 048
Reads from disk to cache = 41
Writes from cache to disk = 8 612
Fetches from cache = 30 938


Лучше под базу ставить SSD получается?
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536014
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбург,

ей-богу, если процы примерно одинаковые (по частоте), памяти достаточно, а загрузка с диска тормозит, то разумеется проблема в диске.
В первую очередь надо проверять диски hdtune, crystaldiskmark, и т.д., и смотреть настройки рэйда. Предполагаю, что просто выключен кэш записи.
В том же perfmon это видно как прямая линия по скорости записи, весьма низкая относительно практической (штатной) скорости записи на диск.
Напомню, что для обычных SATA на sata 3 (6гбит) это не меньше 80 мегабайт в секунду.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536018
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургЛучше под базу ставить SSD получается?На третьи сутки Зоркий Глаз увидел, что у тюрьмы нет задней стены.

kdvНапомню, что для обычных SATA на sata 3 (6гбит) это не меньше 80 мегабайт в секунду.Это последовательное чтение в 1 поток, может, кстати быть немного больше 100 мегабайт в секунду, сам видел.
Но, картина немного (на пару порядков) меняется, когда речь заходит о случайном доступе мелкими блоками. САТА диск порядка 100 операций в секунду, на типовом блоке для ФБ в 8 килобайт получается чуть меньше 1 мегабайта в секунду (в худшем случае, если никакое кэширование не вмешалось и переупорядочивание команд не помогло).
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536025
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбург,

а что это за диски такие "мощные" :-)
Вот, к примеру,
слева - древний Hitachi HDS721050CLA362 на 500 гиг, SATA 2
справа - raid 1 из двух 2тб Seagate ST2000DM001, SATA 3
десктопный комп, raid на биосе, никаких отдельных контроллеров.
Напомню, это диски HDD.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536032
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyСАТА диск порядка 100 операций в секунду, на типовом блоке для ФБ в 8 килобайт получается чуть меньше 1 мегабайта в секунду
это все понятно, но по критериям, которые меряет crystaldiskmark, можно легко понять где и что плохо.
Вот данные с правой картинки, для raid 1 из двух сигейтов

Random Read 4KiB (Q= 32,T= 1) : 1.362 MB/s [ 332.5 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 1.082 MB/s [ 264.2 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 0.521 MB/s [ 127.2 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 0.990 MB/s [ 241.7 IOPS]

Предлагаю сравнить это с дисками, приведенными Евгением.
Кстати, вот еще тест 4кб, 32q t32
Random Read 4KiB (Q= 32,T=32) : 1.580 MB/s [ 385.7 IOPS]
Random Write 4KiB (Q= 32,T=32) : 1.104 MB/s [ 269.5 IOPS]

А про SSD пример результатов тут
https://crystalmark.info/software/CrystalDiskMark/manual-en/
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536060
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургЛучше под базу ставить SSD получается?SSD лучше, но и raid нужно настроить.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536085
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.
hvladSSD лучше, но и raid нужно настроить.
Да нашему серверу уже 7 лет, контроллер там sata2, диски эти ещё родные, вряд ли там что настроишь. Там ещё один рэйд на новых sata3 дисках, так там цифры в 1.5 раза лучше показывает, тоже не фонтан - контроллер тот же.
Просто кроме этой проблемы, других проблем с базой нет, сама база маленькая, транзакций мало, большинство только читают. Да и файл-то насквозь через базу передаётся, то есть блоб временный, не думал что при этом влияние дисков такое будет.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536086
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvэто все понятно,Тебе понятно, мне понятно, но тем не менее регулярно выплывают вопросы... как же так, новёхонький диск, а скорость всего 1 мегабайт в секунду?

hvladSSD лучше, но и raid нужно настроить.Наличие возможности (и включение оной) кэширования записи на контроллере заметно ускоряет работу, даже когда массив из ССД, на хдд разница вообще драматическая (на случайном многопоточном доступе).
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536088
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургДа и файл-то насквозь через базу передаётся, то есть блоб временный, не думал что при этом влияние дисков такое будет.Насколько временный? если его можно загнать в ГТТ и достаточно ОЗУ, то влияние дисков можно нивелировать.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536097
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyНасколько временный? если его можно загнать в ГТТ и достаточно ОЗУ, то влияние дисков можно нивелировать.
Вообще временный. Это (та что реальная, но на основе udf Дмитрия) процедура передачи файлов насквозь через базу, чтобы не использовать отдельный протокол параллельно базе, которая знает о полномочиях пользователей на файлы.
Получил файл с сервера в блоб являющийся параметром процедуры, выдал его как результат клиенту. В таблицы он вообще не пишется.
ОЗУ достаточно, использую классик, 50 клиента по 50мб на коннект. То есть 16гб за глаза.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536102
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургВ таблицы он вообще не пишется.

Но он пишется в базу. База пухнет: http://www.sql.ru/forum/actualthread.aspx?tid=1272202
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536109
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Пишется, я понимаю, и тут же уничтожается и место освобождается, туда тут же пишется следующий блоб. Мы каждый день 10гб передаём, а база распухла на 8гб за 3года, что не делали рестор рабочей базы. По сути размер базы увеличивается один раз на размер самого большого передаваемого файла. Может ещё чуть чуть. Эти "чуть-чуть" и составили 6-7 гб за 3 года. Я не знаю, "я же не настоящий сварщик".
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536154
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургПишется, я понимаю, и тут же уничтожается и место освобождается, туда тут же пишется следующий блоб.на старте сервера создавать пустую базу на RAM диске и гнать блобы через нее?
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39536178
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky на старте сервера создавать пустую базу на RAM диске и гнать блобы через нее?
Да смысла особого нет - даже с обычным hdd моего компа ака сервер2 уже сеть 100мбит загружается на 80-90%. А с ssd вообще хорошо должно все стать. Тем более что этот способ в основном для передачи через интернет используется, а там и 50мбит будет достаточно - больше канал не пропустит. А разносить по разным базам полномочия на файлы и их передачу более геморойно. Но если когда-то объёмы передачи сильно вырастут, почему бы и нет.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538498
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал еще погонять загрузку из файла в блоб. То что проблема связана с диском это понятно стало. Но как-то она неправильно коррелирует с данными, которые выдает crystal. На сервере два рэйда - C:\ и E:\. Для них Crystal выдает данные отличающиеся в 1,5 раза - C:\ привел выше (слева), E:\ в 1,5 раза лучше характеристики. Но скорость загрузки через них почти одинаково плохая.
Зато есть внешний диск, подключенный через USB (F:\), для которого характеристики Crystal показывает в несколько раз хуже, но если база лежит на нем, то загрузка выполняется в 5 раз быстрее. Прикладываю график загрузки сети - пики это передача блоба от базы на клиента (клиент в локальной сети), провалы - загрузка файла в базу во временный блоб.
График загрузки сети База во всех 3-х случаях одинаковая, отресторенная рабочая и раскопированная на 3 диска.
Результат теста внешнего диска, подключенного через USB Подключен к другому компу, поэтому буква диска другая, не F:\.
График загрузки сети при загрузке через RAM-диск
Попробовал даже загружать через отдельную базу расположенную на RAM-диске, как посоветовал Иван - намного быстрее, но не ахти как, локальная сеть полностью не загрузилась даже - примерно на половину. При том, что при аналогичной загрузке с Сервера2 загрузка около 90%.
Понятно, что тест выполняемый Crystal копированием по 4кБ это не истина в последней инстанции для конкретной базы. Но все же - можно что-то сделать на том железе что есть? Поставить SSD на сервер пока нет возможности - все места под диски заняты, подключить мимо штатного контроллера HP не дает.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538592
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если подключить более одного клиента? хотя бы парочку? может 50 мегабит на каждого клиента это и не плохо?

Как-то странно для сервера 100 мегабит, гигабит встраивают уж лет 10 даже в десктопные матери.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538639
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,
Подключил двух клиентов, правда с одного и того же компа. Разницы никакой. Т.е. скорость между ними делится. Потом попробую с двух компов одновременно подключиться, но не думаю что это что-то изменит.
Сетевая конечно на 1Гбит, но свитч на 100МБит.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538647
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже самое, но клиенты подключаются к разным базам на одном сервере - одна на RAM-диске, другая на внешнем HDD.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538657
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже что в первом тесте - два клиента к одной базе, но база лежит на внешнем HDD
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538667
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже что в тесте №2 - подключение к разным базам, но расположенных на одном RAM-диске
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538686
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я могу объяснить эти веселые картинки только кривыми драйверами.
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538798
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбург,

хня какая-то. А если файл в 10 гиг скопировать, локально, с клиента 1, с клиента 2?
Я как-то не догоняю взаимосвязь скорости диска и сетевого протокола. Конечно, тормозить может что-то одно, но ...
...
Рейтинг: 0 / 0
Медленная работа функции LoadBlobFromFile
    #39538875
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургДа нашему серверу уже 7 лет, контроллер там sata2, диски эти ещё родные, вряд ли там что настроишь. а как там с батарейкой контроллера?
когда батарейка заканчивается, контроллер перестает кешировать, и скорость падает.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Медленная работа функции LoadBlobFromFile
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]