Ограничить соединения в libevent - PullRequest
4 голосов
/ 02 июля 2011

Я хочу контролировать предел возможных подключений libevent-http на процесс.

Как я могу это сделать?

Я не нашел никакой информации в документации, пожалуйста, помогите!

Я думаю, что если я не ограничу количество подключений - система может рухнуть. Проект очень большой нагрузки.

ev_base = event_init();
ev_http = evhttp_new(ev_base);
// limit http connections here... how can i do that?

1 Ответ

3 голосов
/ 03 июля 2011
struct evconnlistener *
evconnlistener_new(struct event_base *base,
    evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
    evutil_socket_t fd)

Бэклог - это то, что вы хотите изменить. Внутренне они называют:

listen(fd, backlog)

Однако в своей библиотеке http они фиксируют отставание до 128:

evhttp_bind_socket_with_handle(struct evhttp *http, const char *address, ev_uint16_t port)
{
    [...]
        if (listen(fd, 128) == -1) {
                event_sock_warn(fd, "%s: listen", __func__);
                evutil_closesocket(fd);
                return (NULL);
        }
    [...]
}
...