Я разрабатываю прокси-сервер TCP, который должен быть поставлен перед службой TCP, которая должна обрабатывать от 500 до 1000 активных соединений из дикого Интернета.Насколько медленны сокеты TCP по сравнению с именованными каналами в Windows для localhost IPC?
Прокси-сервер работает на той же машине, что и сервис, и в основном прозрачен. Служба по большей части не знает прокси-сервера, единственным исключением является уведомление о реальном удаленном IP-адресе клиентов.
Это означает, что для каждого входящего открытого TCP-сокета на сервере есть еще два сокета: вторая из пары в прокси-сервере, а вторая - для реальной службы за прокси-сервером.
Размеры окна отправки и получения в двух прокси-сокетах установлены на 1024 байта.
Каковы последствия этого для производительности? Насколько медленно эта конфигурация? Должен ли я приложить некоторые усилия для изменения службы для использования Named Pipes (или другого механизма IPC) или локального TCP-сокета в большинстве случаев является эффективным IPC?
Объединение двух приложений не является вариантом. Прямо сейчас мы застряли в двух конфигурациях процесса.
EDIT: Причина наличия двух отдельных процессов на одном и том же оборудовании - это 100% экономичность. У нас только один сервер, и мы не планируем получать больше (без денег).
Служба TCP - это устаревшее программное обеспечение на Visual Basic 6, которое выходит за рамки наших ожиданий. Прокси-сервер - это C++. У нас нет времени, денег и трудозатрат, чтобы переписать и перенести код VB6 в современную среду программирования.
Прокси-сервер - это наша попытка смягчить определенную проблему с производительностью в службе, DDoS attack, с которой мы время от времени получаем.
Прокси-сервер с открытым кодом, and here is the project source code.
TCP-соединение внутри хоста будет реализовано максимально эффективно (прочитайте: как двунаправленный локальный канал или что-то подобное этому) в любом современном сетевом стеке, который стоит его соли, поэтому я был бы удивлен (и немного разочарован в Microsoft), если была заметная разница в производительности между TCP и Named Pipes для этого варианта использования. –
@JeremyFriesner Я согласен с вами, я бы хотел предположить, что это так на «Windows Server 2008». – vz0