3
libev를 이벤트 루프로 사용하는 tcp 서버가 있습니다. 새 허용 소켓 을 위해 내가 설정 :libev에서 100 % CPU 사용량
ev_io_init(&conn->io, tcp_conn_on_event_cb, conn->fd, EV_READ | EV_WRITE);
을 새 연결이 오는 경우는, 내 서버 내가 100 %의 CPU 사용률이의 CPU 사이클을 전체 소비한다.
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
....
솔루션 FO이 : 내 프로그램은 내가이 한
strace mybinary
을 EV_WRITE
static void tcp_conn_on_event_cb(ev_loop_t *loop, ev_io *ev, int revents)
로 설정 revents와 tcp_conn_on_event_cb 콜백
모든 시간을 호출 이 문제는 제발?
감사를 사용할 수 있습니다. 이것은 나를 도왔다. 나는 높은 CPU를 일으키는 타이머 뒤에 있었다. 그러나 이것은 나의 문제를 해결했다. 새 소켓에 대해 EV_READ와 EV_WRITE를 모두 설정했습니다. – sunil
안녕하세요; 괜찮습니다 –