2011-07-02 6 views
4

Je souhaite contrôler la limite des connexions libevent-http possibles par processus.Limiter les connexions dans libevent

Comment puis-je faire cela?

Je n'ai trouvé aucune information dans la documentation, s'il vous plaît, aidez-moi!

Je pense que si je n'ai pas limité le nombre de connexions - le système peut tomber en panne. Le projet est une charge très élevée.

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

est ce que je cherche – twoface88

+0

Si le système peut tomber en panne à partir de l'épuisement des ressources, vous devez probablement désactiver la sur-exécution Sur Linux, 'echo" 2 ">/proc/sys/vm/overcommit_memory' Vous voudrez probablement limiter les connexions, mais la désactivation de la surcommande devrait être la première étape de la configuration. serveur Linux de production. –

Répondre

3
struct evconnlistener * 
evconnlistener_new(struct event_base *base, 
    evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, 
    evutil_socket_t fd) 

Le carnet de commandes est ce que vous voulez modifier. interne qu'ils appellent:

listen(fd, backlog) 

Cependant, dans leur bibliothèque http ils fixent le carnet de commandes à 128: setrlimit (RLIMIT_NOFILE ...

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