|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Обнаружил существенное проседание скорости выполнения запросов по локальной сети по сравнению с localhost (~800 req/s против ~8000 req/s с нагрузкой данными по 6000 байт на каждый запрос, 1600 против 25000 без нагрузки). * Скорость по локалке через iperf порядка 200 МБит/с (при нагрузке объемы порядка 40 Мбит/с - то есть канал не забит). * FB2.5.7, но на FB3 ситуация та же. * Клиент и сервер Win7 * Delphi, IBX * Запросы - простой "EXECUTE PROCEDURE SP(:P_TIME, :P_DATA)", сама SP пустая. Коммит транзакции через каждые 100 запросов; повышение лимита особо ситуации не меняет. Вопрос : есть ли средства повысить скорость обработки запросов? Трясти сетевиков? Что пробовал: - TcpRemoteBufferSize ставил в 32к - Новая Тр-я каждые 500 запросов вместо 100 - Клиентская либа как от 2.5, так и от 3 - База на FB3 под Debian: результат есть! 1500 и 2500 с данными и без соответственно. Хотя все равно далеко от максимума. Тестовый набор в аттаче и частично в спойлере Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 18:51 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3*Вопрос*: есть ли средства повысить скорость обработки запросов? Есть. Сделать то, для чего клиент-сервер предназначен изначально: перейти на многопользовательскую работу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:02 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Есть. Сделать то, для чего клиент-сервер предназначен изначально: перейти на многопользовательскую работу. Она есть: два писателя и десяток читателей. Бенч сделан для настройки и выяснения максимума скорости самого движка в идеальных условиях. Значение будет взято за эталон, а дальше уже навешивается логика и мультиюзерность. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:07 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3Скорость по локалке через iperf порядка 200 МБит/с (при нагрузке объемы порядка 40 Мбит/с - то есть канал не забит). я с похожим парадоксом столкнулся. Сеть 1gb, iperf показывает прокачку 100 мегабайт в секунду, всё норм. Файлы по сетке летают как положено. При этом рестор на удаленный комп - выше 10 мегабит (!!!) не поднимается, бэкап 3 гиг ресторится в базу 4гиг аж 2 часа. Попробовал принудительно загрубить сетку до 100мбит, iperf показывает опять же честные 10 мегабайт в секунду. И ... точно такой же рестор идет со скоростью 9 мегабит, т.е. не сильно медленнее чем по сетке 1гбит. При этом по сетке при ресторе эти самые 9-10 мбит распределены так - 2.5-3мбит на прием, и остальные 6.5-7 мбит на передачу. Параметры никакие не крутил, т.к. не понял, что это, и чем и куда крутить. На одном компе, через тцп (localhost) - в 5 раз быстрее (через -se в 28 раз быстрее). Это что, раундтрипы такие? Или как это вообще происходит, что сетки 1гб и 100мб по скорости рестора (передачи данных ФБ) почти не отличаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:15 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3Она есть: два писателя и десяток читателей. Доведи число писателей до полудюжины хотя бы. У тебя латентность сети уже начинает ролять. Ну или ты используешь какую-то кривую библиотеку доступа, которая делает гораздо больше роунд-трипов, чем необходимо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:16 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdvЭто что, раундтрипы такие? Ага. Чисто для сравнения попробуй рестор через stdin fbsvcmgr. Про то, чтобы испытать скорость Fireswarm, я уже не говорю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:23 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdv я с похожим парадоксом столкнулся. Мда, я ожидал раундтрипы на запросах, но чтоб на ресторе... Dimitry Sibiryakov Доведи число писателей до полудюжины хотя бы. У тебя латентность сети уже начинает ролять. Ну или ты используешь какую-то кривую библиотеку доступа, которая делает гораздо больше роунд-трипов, чем необходимо. 6 писателей с нагрузкой по 6000 байт - 400-430 r/s. На сервере 16.5 Мбайт/с на прием. Но это на супере (fbserver.exe -a) На Debian ситуация намного лучше по причине того, что в винде сетевой стек говно?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:37 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:03 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3400-430 r/s Если это "записи в секунду", то что-то ты реально делаешь криво в приложении. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:04 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Выдача из WireShark при размере нагрузки = 1 байт. Полный цикл - старт транзакции, выполнение запроса с параметрами, коммит. Странноват такой объем (1314*4 + 1070) для пустого запроса, это нормально? "No.""Time""Source""Destination""Protocol""Length""Info""200""2.543925""Local""Remote""GDS DB""74""Transaction""201""2.546028""Remote""Local""GDS DB""86""Response""202""2.549990""Local""Remote""GDS DB""1314""Execute""203""2.549996""Local""Remote""TCP""1314""54487 → 3050 [ACK] Seq=1281 Ack=33 Win=258 Len=1260""204""2.550000""Local""Remote""TCP""1314""54487 → 3050 [ACK] Seq=2541 Ack=33 Win=258 Len=1260""205""2.550002""Local""Remote""TCP""1314""54487 → 3050 [ACK] Seq=3801 Ack=33 Win=258 Len=1260""206""2.550005""Local""Remote""TCP""1070""54487 → 3050 [PSH ACK] Seq=5061 Ack=33 Win=258 Len=1016""207""2.550500""Remote""Local""TCP""60""3050 → 54487 [ACK] Seq=33 Ack=3801 Win=516 Len=0""208""2.550754""Remote""Local""TCP""60""3050 → 54487 [ACK] Seq=33 Ack=6077 Win=516 Len=0""209""2.550755""Remote""Local""GDS DB""86""Response""210""2.550838""Local""Remote""GDS DB""62""Commit""211""2.552636""Remote""Local""GDS DB""86""Response""214""2.750058""Local""Remote""TCP""54""54487 → 3050 [ACK] Seq=6085 Ack=97 Win=257 Len=0" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:06 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Dimitry SibiryakovЧисто для сравнения попробуй рестор через stdin fbsvcmgr. через stdin тест был, разумеется, но через гбак, а не fbsvcmgr. В любом случае удаленный комп засасывал бэкап с локального. Ну и - stdin в полтора раза медленнее, чем локально -se. Т.е. в сумме рестор шел со скоростью 6 мегабайт в секунду. Ну и прокачка по сетке там была где-то не меньше 100мбит, я не помню уже. Грубо говоря, на 1гбит рестор через stdin по сетке быстрее, чем локальный рестор через xnet :-) Василий 3но чтоб на ресторе... рестор - это массовые препарированные инсерты в длинной транзакции. И тут два вопроса - с какого фига при таких инсертах сервер возвращает клиенту треть трафика, и почему всё это так тормозится, как будто передается одна запись на сетевой пакет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:15 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Симонов Денис если планируешь перейти а 4.0, то попробуй Batch API Пока на трешку только медленно перехожу)) а есть описание? Порылся, но поисковики про этот АПИ не в курсе. Мне бы, наверно, пригодилось - все равно уже сейчас по 100-200 инсертов в секунду идут Dimitry Sibiryakov Если это "записи в секунду", то что-то ты реально делаешь криво в приложении. Да, запросы в секунду. Возможно и криво - знать бы, что... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:16 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdvИ тут два вопроса - с какого фига при таких инсертах сервер возвращает клиенту треть трафика, и почему всё это так тормозится, как будто передается одна запись на сетевой пакет. Ну и ответы соответствующие: потому что статус-вектор это 20 целых чисел и таки да, одна запись на сетевой пакет. Это с сервера на клиент они буферизуются, а туда - опаньки. Василий 3Возможно и криво - знать бы, что... Как минимум - параметр процедуры размером в 32кб. И wireshark почему-то утверждает, что идёт всего один запрос на транзакцию и 6000 байт данных (что, впрочем, и написано в коде). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:53 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3, как обычно Release Notes \examples\interfaces\11.batch.cpp \examples\interfaces\12.batch_isc.cpp ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 22:38 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3 Обнаружил существенное проседание скорости выполнения запросов по локальной сети по сравнению с localhost (~800 req/s против ~8000 req/s с нагрузкой данными по 6000 байт на каждый запрос, 1600 против 25000 без нагрузки). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 22:42 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
hvlad, мне-то чего пробовать, интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 23:51 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdv hvlad, мне-то чего пробовать, интересно. Попробуй 4-ку - gbak и сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 00:34 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov И wireshark почему-то утверждает, что идёт всего один запрос на транзакцию и 6000 байт данных (что, впрочем, и написано в коде). Да, верно :) запутался в процессе разных условий тестирования. При нагрузке в 1 байт ситуация ожидаемая, "No.""Time""Source""Destination""Protocol""Length""Info""34""2.333609""Local""Remote""GDS DB""74""Transaction""35""2.335440""Remote""Local""GDS DB""86""Response""36""2.336426""Local""Remote""GDS DB""114""Execute""37""2.337006""Remote""Local""GDS DB""86""Response""38""2.337098""Local""Remote""GDS DB""62""Commit""39""2.338922""Remote""Local""GDS DB""86""Response""40""2.543392""Local""Remote""TCP""54""9375 → 3050 [ACK] Seq=89 Ack=97 Win=259 Len=0" Dimitry Sibiryakov Как минимум - параметр процедуры размером в 32кб. А что здесь не так? Мне надо писать данные вплоть до такого размера. Или такой параметр создаёт большую нагрузку? Попробую уменьшить. Симонов Денис Василий 3, как обычно Release Notes \examples\interfaces\11.batch.cpp \examples\interfaces\12.batch_isc.cpp Спасибо! hvlad А чего не 36000 байт ? :) Попробуй теперь 600 и 60 байт 6кб - типичный размер в моей задаче, вот на нем и проверял. Конечно, чем больше размер данных, тем меньше req/s ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 10:39 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3, в 2.5/3.0 можно попробовать в execute block запихать пачку операторов. Правда в 2.5 сильно не разгонишься, помешает ограничение в 64K на длину входного сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 10:53 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Василий 3А что здесь не так? Мне надо писать данные вплоть до такого размера. Эва... А можно поинтересоваться что это за "данные вплоть до такого размера"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:37 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНу и ответы соответствующие: потому что статус-вектор это 20 целых чисел и таки да, одна запись на сетевой пакет. Это с сервера на клиент они буферизуются, а туда - опаньки. То есть, получается, что если из бэкапа прочитано 100 записей размером 80 байт, то они влезли в 1 пакет 8к, а на это сервер гбаку отвечает 100 пакетами по 20 байт? Всё равно не сходится. Хотя общий принцип торможения понятен: 1. получаем пакет из 100 записей 2. вставляем запись (дисковые операции, то-сё) 3. отправляем пакет про результат вставки по сетке 4. тут вроде клиент должен отправить подтверждение серверу, что "он понял", +1 пакет. 5. goto 2 как результат - ни диск не загружен, ни сеть. В результате 35 миллионов записей ресторятся по сетке со скоростью 5000 записей в секунду. Отсюда же - 5кратная разница между рестором на localhost и -se (или 2.5 кратная с xnet) hvladПопробуй 4-ку - gbak и сервер. если там идет через batch, так понятно, что будет пулей. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:09 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdvТо есть, получается, что если из бэкапа прочитано 100 записей размером 80 байт, то они влезли в 1 пакет 8к, а на это сервер гбаку отвечает 100 пакетами по 20 байт? Нет. Вплоть до четвёрки получается, что эти записи влезли в 100 пакетов по 160 байт, а сервер на это отвечает 100 пакетами по 80 байт. Не забывай про message-обвязку и то, что в статус-векторе лежат целые числа, а не байты. И да, это очень сильный источник торможения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:21 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
kdv То есть, получается, что если из бэкапа прочитано 100 записей размером 80 байт, то они влезли в 1 пакет 8к Каждая запись - это отдельный insert, т.е. выполнение запроса. До появления батчей нет способа отправить несколько запросов серверу в одном пакете. И - да, каждый запрос получает свой ответ. А как ты хотел ? И - нет - очередная феерическая чушь от ДС про то, что статус всегда шлётся как 20 чисел (даже пустой). kdv hvladПопробуй 4-ку - gbak и сервер. если там идет через batch, так понятно, что будет пулей.Лишь бы не проверять, вот что это за позиция такая ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:21 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
Как-то мне вчера ускользнуло: kdvчерез stdin тест был, разумеется, но через гбак, а не fbsvcmgr. Это две совершенно разные вещи. gbak до сих пор не умеет заливать поток с клиента. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:23 |
|
Быстродействие FB по локальной сети
|
|||
---|---|---|---|
#18+
hvladИ - нет - очередная феерическая чушь от ДС про то, что статус всегда шлётся как 20 чисел (даже пустой). Чушь, конечно, но тем не менее: Код: plaintext
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:25 |
|
|
start [/forum/topic.php?fid=40&fpage=12&tid=1560251]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 182ms |
0 / 0 |