Я разрабатываю TCP-прокси, который должен быть поставлен перед службой TCP, которая должна обрабатывать от 500 до 1000 активных соединений из дикого Интернета.
Прокси-сервер работает на той же машине, что и служба, и в основном прозрачен. Служба по большей части не знает прокси-сервера, единственным исключением является уведомление о реальном удаленном IP-адресе клиентов.
Это означает, что для каждого входящего открытого TCP-сокета на сервере есть еще два сокета: вторая из пары в прокси-сервере, а вторая - для реальной службы за прокси-сервером.
Размеры окна отправки и получения в двух прокси-сокетах установлены на 1024 байта.
Каковы последствия этого для производительности? Насколько медленно эта конфигурация? Должен ли я приложить некоторые усилия для изменения службы для использования Named Pipes (или другого механизма IPC) или локального TCP-сокета по большей части является эффективным IPC?
Слияние двух приложений не является вариантом. Прямо сейчас мы застряли в двух конфигурациях процесса.
EDIT. Причина наличия двух отдельных процессов на одном и том же оборудовании - это 100% экономичность. У нас только один сервер, и мы не планируем получать больше (без денег).
Служба TCP - это устаревшее программное обеспечение в Visual Basic 6, которое выходит за рамки наших ожиданий. Прокси-сервер - это С++. У нас нет времени, денег и трудозатрат для перезаписи и переноса кода VB6 в современную среду программирования.
Прокси-сервер - это наша попытка смягчить определенную проблему производительности службы, DDoS-атаку, с которой мы время от времени получаем.
Прокси-сервер с открытым исходным кодом, и вот исходный код проекта.