![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Создаю производительный веб-сервер. Для чего и почему не использую существующие - это выходит за рамки этой темы.
Использую компоненты Indy. c включенным KeepAlive (без него результаты в 2 раза хуже) сервер способен обработать не более 5000 запросов в секунду (тестировал с помощью утилиты ab.exe ApacheBench). Основная нагрузка идет на процессор (100% нагрузка на все ядра). Основное время отжирается функциями winsock: WSASend и WSARecv Это означает, что проблема не в Indy Достоверно известно, что на этом же железе nginx обрабатывает более 10000 запросов в секунду. А некоторые роутеры, способны обрабатывать и более 300 000 запросов в секунду. Вопросы: 1) Возможно ли каким-либо образом ускорить работу WSASend и WSARecv? 2) Как обойти эти команды, не использовать их вообще? Я так понимаю, что для этого нужно писать свой драйвер, может у кого-то есть документация или примеры?. 3) Может проблему можно решить переписав код на Lazarus и запустить это всё дело под FreeBSD (там уж точно нету WSASend). |