2011-07-02 33 views
4

我想控制每個進程可能的libevent-http連接的限制。libevent中的限制連接

我該怎麼做?

我沒有在文檔中找到任何信息,請幫忙!

我認爲如果我沒有限制連接數 - 系統可能會崩潰。項目負荷很高。

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

的setrlimit是(RLIMIT_NOFILE ...我找什麼 – twoface88

+0

如果系統可能會崩潰在資源耗盡的情況下,你可能需要禁用overcommit,在Linux上,'echo「2>>/proc/sys/vm/overcommit_memory'。你可能想要限制連接,但是禁用overcommit應該是設置任何生產Linux服務器。 –

回答

3
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); 
     } 
    [...] 
}