Глобальные конфигурации используются для установки глобальных параметров по умолчанию, чтобы удовлетворять реальным бизнес-потребностям и повышать производительность программы. Изменение глобальной конфигурации должно происходить до любого вызова в рамках используемой системы, иначе изменения могут не примениться. Кроме того, некоторые глобальные конфигурационные параметры могут быть переопределены конфигурацией 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
:
Все ресурсы, необходимые для работы системы, запрашиваются только при первом использовании. Например, если пользователь не использует DNS-анализ, то асинхронный анализатор DNS или потоки DNS не будут запущены.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )