NoneEpoll - это API уведомления о готовности Linux 2.6 для сокетов, каналов и специальных дескрипторов событий, сигналов и таймеров, которые могут работать как в режиме с запуском по уровню, так и по фронту, хотя в настоящее время только поведение с запуском по уровню соответствует документации.. В отличие от опроса или выбора, epoll масштабирует O(1) по отношению к количеству дескрипторов и O(N) по отношению к реализованным событиям.
1 ответ

epoll_create и epoll_wait

Меня интересовали параметры двух API epoll. epoll_create (int size) - в этом API размер определяется как размер пула событий. Но, похоже, что больше событий, чем размер все еще работает. (Я установил размер как 2 и заставил пул событий иметь 3 событ…
06 мар '12 в 02:46
1 ответ

Не завершать программу в epoll_wait

Я хочу справиться, если epoll_wait был прерван по любой причине (например, SIGINT) while ( true ) { n = epoll_wait ( epoll_fd, events, max_events, -1 ); if ( errno == EINTR ) { ... } } Но отладчик даже не пошел в if, Программа была прекращена в epol…
08 июн '13 в 13:34
3 ответа

Как реализовать тайм-аут epoll?

Я работаю над сетевым программированием с использованием epoll. Кажется, работает нормально. Я хотел бы добавить функцию тайм-аута, чтобы, если клиент не отправлял ничего в течение длительного периода времени, он просто отключил бы клиента. Как мне …
06 июл '11 в 01:04
1 ответ

Эполл с активированным краем и один выстрел сообщает только один раз

В настоящее время я добавляю sockfds, созданные из accept, в экземпляр epoll со следующими событиями: const int EVENTS = ( EPOLLET | EPOLLIN | EPOLLRDHUP | EPOLLONESHOT | EPOLLERR | EPOLLHUP); Как только событие инициируется, я передаю его потоку об…
24 ноя '15 в 04:23
2 ответа

epoll мгновенно возвращается на стандартный ввод

Я пытался сделать неблокирующий ввод-вывод с помощью стандартного ввода и некоторых других fd. Я добавил их в библиотеку ржавчины mio, но во время отладки с помощью strace я обнаружил, что это проблема epoll. Когда я добавляю stdin в epoll, epoll_wa…
30 июн '17 в 14:31
1 ответ

Общее объяснение того, как работает epoll?

Я делаю техническую переписку о переключении с опроса базы данных (через синхронный вызов хранимой процедуры) на очередь сообщений (через pub/sub). Я хотел бы объяснить, как опрос базы данных сильно отличается и намного тяжелее, чем установка соедин…
12 дек '12 в 17:48
1 ответ

Блокировка epoll_wait на сигнальном сокете

Извините за длинный пост. Я бы опубликовал код, чтобы было легче понять проблему, с которой я столкнулся. Похоже, что если к экземпляру epoll добавлен сигнальный сокет, epoll_wait на экземпляре epoll не будет блокироваться. Следующий пример позволил…
21 июн '13 в 14:25
1 ответ

Почему epoll_wait() не реагирует на dup2(writable_fd, non_writable_fd)?

Давайте представим, что я добавил не доступный для записи fd в epoll watcher, чтобы ждать, когда он станет доступным для записи. epoll_ctl(epollfd, EPOLL_CTL_ADD, non_writable_fd, {EPOLLOUT}) non_writable_fd все еще не для записи и epoll_wait вернет…
14 янв '15 в 16:50
1 ответ

Плохо сбалансированный сокет принимает ядро ​​Linux 3.2 против ядра 2.6

Я запускаю довольно крупномасштабное приложение Node.js 0.8.8 с использованием Cluster с 16 рабочими процессами на 16-процессорной коробке с гиперпоточностью (таким образом, 32 логических ядра). Мы обнаруживаем, что после перехода на ядро ​​Linux 3.…
07 дек '12 в 20:55
1 ответ

Очередь ожидания Python и сокет в одном потоке

Мое приложение - tcp сервер, использующий epoll для ожидания запросов. Я хочу дождаться очереди в том же цикле. то есть: wake up the thread either socket r/w is available or queue is not empty. Я, конечно, много гуглил, но ни одного хорошего решения…
05 сен '16 в 12:09
4 ответа

Масштабируемый серверный фреймворк в C++

Я ищу написать серверное приложение на C++, предназначенное для одновременной работы с десятками тысяч клиентов. Он должен работать под Windows и Linux. Я искал фреймворки и библиотеки и наткнулся на Boost Asio, который кажется очень зрелой и широко…
15 июл '11 в 00:15
1 ответ

Тайм-аут простаивающих соединений на сервере epoll

Я пишу TCP-сервер в C, который использует epoll() мультиплексирование ввода / вывода для управления одновременными соединениями. Я хочу установить тайм-аут соединений, которые простаивают более разрешенного времени. До сих пор я храню переменную las…
09 авг '18 в 09:16
1 ответ

Работа с сокетом прослушивания от epoll

Все ниже от man epoll страница: Функция do_use_fd() использует новый готовый дескриптор файла, пока EAGAIN не будет возвращен read(2) или write(2). Пример кода для срабатывания ET: for(;;) { nfds = epoll_wait(kdpfd, events, maxevents, -1); for(n = 0…
19 июн '11 в 09:35
1 ответ

Производительность epoll для меньших значений времени ожидания

У меня есть однопоточный серверный процесс, который отслеживает несколько (около 100) сокетов через epoll в цикле, мой вопрос заключается в том, как определить оптимальное значение значения тайм-аута epoll_wait, так как это однопоточный процесс, все…
29 ноя '11 в 10:05
1 ответ

Сеть с epoll: обработка ошибок

Я работаю над сетевым приложением, написанным на C, с использованием средства Linux epoll. Я действительно реализую свой собственный цикл обработки событий, и да, я знаю, что есть библиотеки, которые делают это для меня. Однако это всего лишь упражн…
18 окт '14 в 10:02
1 ответ

Выбрать и опрос не работает правильно

Я пишу автоматический мультиплексор потока в Java, который должен прочитать большое количество FileDescriptors. Чтобы прочитать файловые дескрипторы (или сокеты и т. Д., Которые имеют FileDescriptor), мне нужна точная подсказка, если у меня есть нес…
11 авг '13 в 20:59
1 ответ

NGINX падает несколько раз

У меня проблемы с NGINX. У меня есть 3 системы (EC2) с балансировкой нагрузки (ELB) под управлением NGINX и php-fpm. На ВСЕХ 3 системах NGINX загадочно падает. Ниже я включил часть журнала в режиме отладки. Перед тем, как пройти мимо журнала, вот мо…
17 сен '14 в 16:10
1 ответ

Как использовать epoll_event data.ptr

Мне все труднее использовать void *ptr в epoll_event. Я могу просто связать это со структурой? Например, я могу сделать что-то подобное? Поскольку я пытаюсь сделать что-то подобное, но это не работает, первый цикл в сокете прослушивания хорош, но по…
11 авг '12 в 18:44
1 ответ

Правильная обработка EWOULDBLOCK с опросом на неблокирующем сокете

Я работаю над опросом TCP-демона уже некоторое время. Недавно я прочитал, что неблокирующие сокеты могут иногда выдавать ошибку EWOULDBLOCK во время send() или recv(). Насколько я понимаю, если recv () выбрасывает EWOULDBLOCK, это (обычно) означает,…
09 сен '10 в 04:42
0 ответов

Как bluez использует epoll_create1 в двух разных процессах?

Я использую bluez mainloop_init (который внутренне использует epoll_create1) и mainloop_run(который внутренне использует epoll_wait) в трех разных процессах, скажем, N1, N2 и N3. Когда я пытаюсь подключиться от N1 к N3 (это означает, что N3 будет по…
28 сен '18 в 05:44