|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Привет всем! Скачал 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.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это для одного файла в 42Мб. Аналогичный файл на сервере 2 затягивается в базу за 2с. Обычные файловые операции - копирование, чтение и т.п. на сервере 1 выполняются нормально, процессор не загружен. Обычным образом (через IBExpert, вьювер блобов) блобы подгружаются практически мгновенно. Пробовал на всех версиях сервера - 32 бита, классик, суперклассик, суперсервер. Разницы нет - все одинаково долго выполняется. На сервере 2 все одинаково быстро. Все тесты выполнялись локально, так что сеть ни при чем. Но при тестах по сети (например, от сервера 1 запрос к серверу 2 и, наоборот - от сервера 2 к серверу 1, все естественно тоже самое - первый случай долго выполняется, второй очень быстро - сеть загружается почти на все 100Мбит). К базам во время теста никто не подключен кроме SYSDBA. Вроде в UDF функции тормозить-то нечему, но и на железо грешить тоже не получается. Кривые руки тоже просто некуда приложить было. Куда надо копать? какую статистику смотреть почему так получается? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 12:32 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург, проверяйте настройки кеширования raid. Прогоните любой тест с random writes, тот же crystal например. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 12:45 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
hvlad, Спасибо. Похоже действительно дело в рэйде. Подцепил обычный внешний диск к серверу 1, скопировал туда базу. Тот же самый запрос на той же архитектуре, том же файле. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Лучше под базу ставить SSD получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 14:05 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург, ей-богу, если процы примерно одинаковые (по частоте), памяти достаточно, а загрузка с диска тормозит, то разумеется проблема в диске. В первую очередь надо проверять диски hdtune, crystaldiskmark, и т.д., и смотреть настройки рэйда. Предполагаю, что просто выключен кэш записи. В том же perfmon это видно как прямая линия по скорости записи, весьма низкая относительно практической (штатной) скорости записи на диск. Напомню, что для обычных SATA на sata 3 (6гбит) это не меньше 80 мегабайт в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 14:08 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургЛучше под базу ставить SSD получается?На третьи сутки Зоркий Глаз увидел, что у тюрьмы нет задней стены. kdvНапомню, что для обычных SATA на sata 3 (6гбит) это не меньше 80 мегабайт в секунду.Это последовательное чтение в 1 поток, может, кстати быть немного больше 100 мегабайт в секунду, сам видел. Но, картина немного (на пару порядков) меняется, когда речь заходит о случайном доступе мелкими блоками. САТА диск порядка 100 операций в секунду, на типовом блоке для ФБ в 8 килобайт получается чуть меньше 1 мегабайта в секунду (в худшем случае, если никакое кэширование не вмешалось и переупорядочивание команд не помогло). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 14:16 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург, а что это за диски такие "мощные" :-) Вот, к примеру, слева - древний Hitachi HDS721050CLA362 на 500 гиг, SATA 2 справа - raid 1 из двух 2тб Seagate ST2000DM001, SATA 3 десктопный комп, raid на биосе, никаких отдельных контроллеров. Напомню, это диски HDD. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 14:26 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
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/ ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 14:36 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургЛучше под базу ставить SSD получается?SSD лучше, но и raid нужно настроить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 15:21 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Спасибо всем. hvladSSD лучше, но и raid нужно настроить. Да нашему серверу уже 7 лет, контроллер там sata2, диски эти ещё родные, вряд ли там что настроишь. Там ещё один рэйд на новых sata3 дисках, так там цифры в 1.5 раза лучше показывает, тоже не фонтан - контроллер тот же. Просто кроме этой проблемы, других проблем с базой нет, сама база маленькая, транзакций мало, большинство только читают. Да и файл-то насквозь через базу передаётся, то есть блоб временный, не думал что при этом влияние дисков такое будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 15:59 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
kdvэто все понятно,Тебе понятно, мне понятно, но тем не менее регулярно выплывают вопросы... как же так, новёхонький диск, а скорость всего 1 мегабайт в секунду? hvladSSD лучше, но и raid нужно настроить.Наличие возможности (и включение оной) кэширования записи на контроллере заметно ускоряет работу, даже когда массив из ССД, на хдд разница вообще драматическая (на случайном многопоточном доступе). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 16:00 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургДа и файл-то насквозь через базу передаётся, то есть блоб временный, не думал что при этом влияние дисков такое будет.Насколько временный? если его можно загнать в ГТТ и достаточно ОЗУ, то влияние дисков можно нивелировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 16:02 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyНасколько временный? если его можно загнать в ГТТ и достаточно ОЗУ, то влияние дисков можно нивелировать. Вообще временный. Это (та что реальная, но на основе udf Дмитрия) процедура передачи файлов насквозь через базу, чтобы не использовать отдельный протокол параллельно базе, которая знает о полномочиях пользователей на файлы. Получил файл с сервера в блоб являющийся параметром процедуры, выдал его как результат клиенту. В таблицы он вообще не пишется. ОЗУ достаточно, использую классик, 50 клиента по 50мб на коннект. То есть 16гб за глаза. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 16:15 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургВ таблицы он вообще не пишется. Но он пишется в базу. База пухнет: http://www.sql.ru/forum/actualthread.aspx?tid=1272202 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 16:22 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Пишется, я понимаю, и тут же уничтожается и место освобождается, туда тут же пишется следующий блоб. Мы каждый день 10гб передаём, а база распухла на 8гб за 3года, что не делали рестор рабочей базы. По сути размер базы увеличивается один раз на размер самого большого передаваемого файла. Может ещё чуть чуть. Эти "чуть-чуть" и составили 6-7 гб за 3 года. Я не знаю, "я же не настоящий сварщик". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 16:29 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургПишется, я понимаю, и тут же уничтожается и место освобождается, туда тут же пишется следующий блоб.на старте сервера создавать пустую базу на RAM диске и гнать блобы через нее? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 17:56 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky на старте сервера создавать пустую базу на RAM диске и гнать блобы через нее? Да смысла особого нет - даже с обычным hdd моего компа ака сервер2 уже сеть 100мбит загружается на 80-90%. А с ssd вообще хорошо должно все стать. Тем более что этот способ в основном для передачи через интернет используется, а там и 50мбит будет достаточно - больше канал не пропустит. А разносить по разным базам полномочия на файлы и их передачу более геморойно. Но если когда-то объёмы передачи сильно вырастут, почему бы и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 19:05 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Попробовал еще погонять загрузку из файла в блоб. То что проблема связана с диском это понятно стало. Но как-то она неправильно коррелирует с данными, которые выдает 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 не дает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 09:05 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
А если подключить более одного клиента? хотя бы парочку? может 50 мегабит на каждого клиента это и не плохо? Как-то странно для сервера 100 мегабит, гигабит встраивают уж лет 10 даже в десктопные матери. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 11:59 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Подключил двух клиентов, правда с одного и того же компа. Разницы никакой. Т.е. скорость между ними делится. Потом попробую с двух компов одновременно подключиться, но не думаю что это что-то изменит. Сетевая конечно на 1Гбит, но свитч на 100МБит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 12:43 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Тоже самое, но клиенты подключаются к разным базам на одном сервере - одна на RAM-диске, другая на внешнем HDD. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 12:55 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Тоже что в первом тесте - два клиента к одной базе, но база лежит на внешнем HDD ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 13:08 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Тоже что в тесте №2 - подключение к разным базам, но расположенных на одном RAM-диске ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 13:21 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Лично я могу объяснить эти веселые картинки только кривыми драйверами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 13:48 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург, хня какая-то. А если файл в 10 гиг скопировать, локально, с клиента 1, с клиента 2? Я как-то не догоняю взаимосвязь скорости диска и сетевого протокола. Конечно, тормозить может что-то одно, но ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 15:23 |
|
Медленная работа функции LoadBlobFromFile
|
|||
---|---|---|---|
#18+
Евгений, ЕкатеринбургДа нашему серверу уже 7 лет, контроллер там sata2, диски эти ещё родные, вряд ли там что настроишь. а как там с батарейкой контроллера? когда батарейка заканчивается, контроллер перестает кешировать, и скорость падает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 16:10 |
|
|
start [/forum/topic.php?fid=40&msg=39538667&tid=1561378]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 166ms |
0 / 0 |