1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sogou-workflow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
about-config.md 6.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 01.03.2025 10:20 552780a

О глобальных конфигурациях

Глобальные конфигурации используются для установки глобальных параметров по умолчанию, чтобы удовлетворять реальным бизнес-потребностям и повышать производительность программы. Изменение глобальной конфигурации должно происходить до любого вызова в рамках используемой системы, иначе изменения могут не примениться. Кроме того, некоторые глобальные конфигурационные параметры могут быть переопределены конфигурацией upstream. Подробнее см. документацию по upstream.

Изменение значений по умолчанию

В файле WFGlobal.h содержится структура глобальных конфигураций со значениями по умолчанию:

struct WFGlobalSettings
{
    struct EndpointParams endpoint_params;
    struct EndpointParams dns_server_params;
    unsigned int dns_ttl_default;   ///< В секундах, время жизни DNS при успешном сетевом запросе
    unsigned int dns_ttl_min;       ///< В секундах, минимальное время жизни DNS при неудачном сетевом запросе
    int dns_threads;
    int poller_threads;
    int handler_threads;
    int compute_threads;            ///< Устанавливается автоматически по количеству ядер процессора, если значение <= 0
    int fio_max_events;
    const char *resolv_conf_path;
    const char *hosts_path;
};

static constexpr struct WFGlobalSettings GLOBAL_SETTINGS_DEFAULT =
{
    .endpoint_params    =   ENDPOINT_PARAMS_DEFAULT,
    .dns_server_params  =   ENDPOINT_PARAMS_DEFAULT,
    .dns_ttl_default    =   12 * 3600,
    .dns_ttl_min        =   180,
    .dns_threads        =   4,
    .poller_threads     =   4,
    .handler_threads    =   20,
    .compute_threads    =   -1,
    .fio_max_events     =   4096,
    .resolv_conf_path   =   "/etc/resolv.conf",
    .hosts_path         =   "/etc/hosts",
};

Структура EndpointParams и её значения по умолчанию находятся в файле EndpointParams.h:

struct EndpointParams
{
    size_t max_connections;
    int connect_timeout;
    int response_timeout;
    int ssl_connect_timeout;
    bool use_tls_sni;
};

static constexpr struct EndpointParams ENDPOINT_PARAMS_DEFAULT =
{
    .max_connections        = 200,
    .connect_timeout        = 10 * 1000,
    .response_timeout       = 10 * 1000,
    .ssl_connect_timeout    = 10 * 1000,
    .use_tls_sni            = false,
};

Например, можно изменить значение по умолчанию для времени ожидания подключения на 5 секунд, а также установить значение по умолчанию для TTL DNS на 1 час, увеличив количество потоков поллеров для декодирования сообщений до 10:

#include "workflow/WFGlobal.h"

int main()
{
    struct WFGlobalSettings settings = GLOBAL_SETTINGS_DEFAULT;

    settings.endpoint_params.connect_timeout = 5 * 1000;
    settings.dns_ttl_default = 3600;
    settings.poller_threads = 10;
    WORKFLOW_library_init(&settings);

    ...
}

Значение большинства параметров очевидно. Обратите внимание, что единицы измерения для параметров TTL DNS — это секунды, а для параметров таймаута коннекта — миллисекунды. Для параметров dns_threads, poller_threads, handler_threads и compute_threads используется значение -1, которое указывает на бесконечное ожидание. Параметр dns_threads представляет собой количество параллельных потоков для доступа к DNS серверу. Однако, мы обычно используем собственный асинхронный анализатор DNS, поэтому потоки DNS не создаются (кроме Windows платформы). Параметр dns_server_params отражает параметры доступа к DNS серверу, такие как максимальное количество одновременных соединений и таймауты подключения и ответа. Параметр compute_threads представляет собой количество потоков для вычислений, по умолчанию равно -1, что указывает на использование количества ядер процессора. Параметр fio_max_events представляет собой максимальное количество событий для асинхронной работы с файлами. Параметр resolv_conf_path представляет путь к файлу конфигурации DNS, по умолчанию равен /etc/resolv.conf для Unix систем. Для Windows он по умолчанию равен NULL, что указывает на использование многопоточного анализа DNS. Параметр hosts_path представляет путь к файлу hosts, по умолчанию равен /etc/hosts для Unix систем. Этот параметр действует только при наличии пути к файлу resolv_conf_path.

Два параметра, связанные с производительностью сети, это poller_threads и handler_threads:

  • Потоки поллеров отвечают за epoll (kqueue) и декодирование сообщений.
  • Потоки хэндлеров являются потоками callback и process для сетевых задач.

Все ресурсы, необходимые для работы системы, запрашиваются только при первом использовании. Например, если пользователь не использует DNS-анализ, то асинхронный анализатор DNS или потоки DNS не будут запущены.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sogou-workflow.git
git@api.gitlife.ru:oschina-mirror/sogou-workflow.git
oschina-mirror
sogou-workflow
sogou-workflow
master