Производительность серверов БД в OE 12
Многопоточность сервера баз данных OpenEdge
Несмотря на то, что к данным в базе можно получить многопоточный доступ через Progress Application Server for OpenEdge, OpenEdge SQL и различные утилиты базы данных, а также сами сервера базы данных, которые взаимодействуют с удалёнными ABL-клиентами, не используют потоки.
Целью реализации многопоточности для серверов базы данных, было увеличение объёма данных, которые могут одновременно извлекаться отдельным сервером, который обслуживает несколько удалённых клиентов. В результате полученное преимущества от развёртывания многоуровневой архитектуре OpenEdge покрывает любое влияние на производительность из-за сетевых подключений по TCP.
При использовании однопоточного сервера параллельные запросы от нескольких удалённых клиентов обрабатываются последовательно (см. Рис.2). Поскольку количество параллельных запросов от разных удалённых клиентов к одному и тому же серверу баз данных увеличивается, производительность поиска данных для любого отдельного удалённого клиента будет снижаться, так как запросы удалённых клиентов обрабатываются одним сервером. В больших системах с большим количеством параллельных удалённых запросов это может стать узким местом для извлечения данных из базы данных.
Кроме того, в однопоточной модели единственный серверный поток должен выполнять и другие задачи, которые он должен делать в дополнение к простой обработке данных удовлетворяя запросы удалённого клиента. Некоторые из них ожидают и обрабатывают новые запросы на подключение, обрабатывают запросы на отключение и решают конфликты блокировки записей для своих подключений. Эти дополнительные задачи выполняются за счёт одновременной обработки запросов на извлечение данных для удалённых клиентов одним и тем же сервером.
Когда удалённый клиент сталкивается с конфликтом блокировки записей, его сервер приостанавливает обработку запроса этого удалённого клиента и продолжает обрабатывать запросы других удалённых клиентов. В случае разрешения конфликта блокировки записи, ожидающий удалённый клиент не будет реализовывать свои записи до тех пор, пока все остальные отложенные задачи не будут выполнены сервером. Это не только влияет на производительность ожидающего удалённого клиента, но и когда конфликты блокировки записей не обрабатываются как можно скорее, они могут создать очередь из необработанных блокировок, если другие клиенты ожидают доступа к той же записи. В зависимости от частоты конфликтов, блокировки записей могут негативно влиять на общую производительность всей системы, как CS, так и SS запросов.
Многопоточный подход MTDBS заключается в предоставлении одного потока для каждого удалённого клиента, обслуживаемого сервером, и в предоставлении дополнительных потоков для выполнения дополнительных задач, выполняемых одним и тем же сервером. Каждый отдельный поток может одновременно извлекать данные из базы данных. В этом случае удалённому клиенту больше не нужно ждать завершения запроса другого клиента, и он не будет ожидать пока сервер обработает запросы на подключение или отключение (см. Рис.3).
С помощью MTDBS поток, ответственный за обработку запросов удалённых клиентов, будет ожидать разрешения блокировки записи почти так же, как это было бы при соединении SS. Таким образом, конфликты блокировки записей будут обрабатываться сразу же после их разрешения, что может значительно повысить общую пропускную способность системы.
Развёртывание приложения в такой среде не требует изменений в самом приложении. Одно и то же приложение может работать с использованием MTDBS, классической среды с CS или SS подключениями. Это также не влияет на развёртывание приложений с использованием серверов приложений, которые удалённо подключаются к базе данных. Они тоже будут пользоваться преимуществами работы с MTDBS.
Несмотря на то, что может быть настроен только один сервер MTDBS для поддержки всех удалённых подключений отдельного развёртывания, это не является рекомендуемой конфигурацией, так как поскольку, когда один MTDBS столкнётся с проблемой, это может повлиять на всех клиентов развёртывания. Прагматичный подход к распределению рабочей нагрузки удалённых клиента между несколькими серверами MTDBS по-прежнему является лучшим вариантом для обеспечения высокого уровня доступности при сбалансированном использовании ресурсов.
Примечание: если применить сигнал kill -SIGUSR1 к процессу сервера MTDBS, то будет выполнена трассировка стека для всех его потоков.
Метка:Производительность